多线程下载图片
下面的代码是一个网络爬虫程序,可以定期下载图片。这个网络爬虫程序每隔一段时间都会执行一次下载图片任务,在下载任务完成后,休眠一段时间在执行。这样反复执行,知道爬虫程序停止。
示例代码:
# 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()