python 线程池 ThreadPoolExecutor
实现步骤
- 创建一个最大容纳数量为3的线程池
- 通过submit提交执行的函数到线程池中
- 通过done来判断线程是否完成
- 通过result来获取返回值
代码实现
from concurrent.futures import ThreadPoolExecutor
import time
def spider(page):
time.sleep(page)
print(f"crawl task{page} finished")
return page
t0 = time.time()
task = []
with ThreadPoolExecutor(max_workers=3) as t:
for i in range(10):
task.append(t.submit(spider, 12-i))
for j in range(5):
time.sleep(2)
print([t.done() for t in task])
print([t.result() for t in task])
print(f"一共耗时 {time.time() - t0} s")
···