实战:多线程下载模拟
44.12 实战:多线程下载模拟
模拟多个 URL 同时下载,总时间接近最慢那个而非相加。
并发下载
# ========================================
# 示例:多线程模拟下载
# 说明:3 个任务并行,总耗时约 max(各任务)
# ========================================
import threading
import time
def download(name, sec):
print(name, '开始下载')
time.sleep(sec)
print(name, '下载完成', sec, '秒')
urls = [('文件A', 2), ('文件B', 1), ('文件C', 1.5)]
start = time.time()
threads = [threading.Thread(target=download, args=u) for u in urls]
for t in threads:
t.start()
for t in threads:
t.join()
print('总耗时', round(time.time() - start, 2), '秒')