单线程和多线程下载文件

Posted laosun0204

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单线程和多线程下载文件相关的知识,希望对你有一定的参考价值。

单线程下载文件:

import requests
import time
from hashlib import md5


def down_load_pic(url):
req = requests.get(url)
m = md5(url.encode())
with open(m.hexdigest() + ‘.png‘, ‘wb‘) as fw: # md5后的名称作为图片的前缀
fw.write(req.content)


url_list = [
‘http://www.nnzhp.cn/wp-content/uploads/2019/10/f410afea8b23fa401505a1449a41a133.png‘,
‘http://www.nnzhp.cn/wp-content/uploads/2019/11/481b5135e75c764b32b224c5650a8df5.png‘,
‘http://www.nnzhp.cn/wp-content/uploads/2019/11/b23755cdea210cfec903333c5cce6895.png‘,
‘http://www.nnzhp.cn/wp-content/uploads/2019/11/542824dde1dbd29ec61ad5ea867ef245.png‘,
]

start_time = time.time()
for url in url_list:
down_load_pic(url)
end_time = time.time()
print(end_time - start_time)

多线程下载文件:

import requests
import time
import threading
from hashlib import md5


def down_load_pic(url):
req = requests.get(url)
m = md5(url.encode())
with open(m.hexdigest() + ‘.png‘, ‘wb‘) as fw:
fw.write(req.content)


url_list = [
‘http://www.nnzhp.cn/wp-content/uploads/2019/10/f410afea8b23fa401505a1449a41a133.png‘,
‘http://www.nnzhp.cn/wp-content/uploads/2019/11/481b5135e75c764b32b224c5650a8df5.png‘,
‘http://www.nnzhp.cn/wp-content/uploads/2019/11/b23755cdea210cfec903333c5cce6895.png‘,
‘http://www.nnzhp.cn/wp-content/uploads/2019/11/542824dde1dbd29ec61ad5ea867ef245.png‘,
]


start_time = time.time()
for url in url_list:
t = threading.Thread(target=down_load_pic, args=(url,))
t.start()
while threading.activeCount() != 1:
pass
end_time = time.time()
print(end_time - start_time)

以上是关于单线程和多线程下载文件的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 定时任务单线程和多线程

单线程和多线程处理1W条数据对比代码

OpenMP:共享同一算法的单线程和多线程实现

如何将迅雷设为线程2(单线程2号)?

进程和线程单线程多线程和多进程

单线程和多线程执行对比—Python多线程编程