Python 线程池ThreadPoolExecutor
Python 线程池ThreadPoolExecutor
使用线程池的好处
-
提升性能:因为减去了大量新建、终止线程的开销,重用了线程资源
-
适用场景:适合处理突发性大量请求或需要大量线程完成任务、但实际任务处理时间较短)
-
防御功能:能有效避免系统因为创建线程过多,而导致系统负荷过大相应变慢等问题
-
代码优势:使用线程池的语法比自己新建线程执行线程更加简洁
ThreadPoolExecutor的使用语法
- 用法1: map函数,很简单
- 注意map的结果和入参是顺序对应的
from concurrent.futures import ThreadPoolExecutor, as_completed
with ThreadPoolExecutor() as pool:
results = pool.map(craw, urls)
for result in results:
print(result)
- 用法2: future模式, 更强大
- 注意如果用as_completed顺序 是不定的
from concurrent.futures import ThreadPoolExecutor, as_completed
with ThreadPoolExecutor() as pool:
futures = [ pool.submit(craw, url) for url in urls]
for future in futures:
print(future.result())
for future in as_completed(futures):
print(future.result())

浙公网安备 33010602011771号