victory的博客

长安一片月,万户捣衣声

0%

多线程 | 多线程下载图片

多线程下载图片

下面的代码是一个网络爬虫程序,可以定期下载图片。这个网络爬虫程序每隔一段时间都会执行一次下载图片任务,在下载任务完成后,休眠一段时间在执行。这样反复执行,知道爬虫程序停止。

示例代码:

# coding=utf-8

import time
import threading
import urllib.request as request

# 线程停止变量
isrunning = True


# 工作线程体函数
def workthread_body():
    while isrunning:
        # 线程开始工作
        print('工作线程执行下载任务...')
        download()
        # 线程休眠
        time.sleep(5)
    print('工作线程结束')


# 控制线程体函数
def controlthread_body():
    global isrunning
    while isrunning:
        # 从键盘输入停止指令exit
        command = input('请输入停止指令')
        if command == 'exit':
            isrunning = False
            print('控制线程结束。')


def download():
    url = 'https://victory-liao.github.io/images/avatar.jpg'
    req = request.Request(url)
    with request.urlopen(req) as response:
        data = response.read()
        f_name = 'download.jpg'
        with open(f_name, 'wb') as f:
            f.write(data)
            print('下载文件成功')


# 主线程
# 创建工作线程对象workthread
workthread = threading.Thread(target=workthread_body)
# 启动线程workthred
workthread.start()

# 创建控制线程对象controlthread
controlthread = threading.Thread(target=controlthread_body)
# 启动线程controlthread
controlthread.start()