Python 线程池ThreadPoolExecutor

Python 线程池ThreadPoolExecutor

使用线程池的好处

  1. 提升性能:因为减去了大量新建、终止线程的开销,重用了线程资源

  2. 适用场景:适合处理突发性大量请求或需要大量线程完成任务、但实际任务处理时间较短)

  3. 防御功能:能有效避免系统因为创建线程过多,而导致系统负荷过大相应变慢等问题

  4. 代码优势:使用线程池的语法比自己新建线程执行线程更加简洁

ThreadPoolExecutor的使用语法

  1. 用法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)

  1. 用法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())

posted @ 2021-06-26 16:54  廿九九  阅读(400)  评论(0)    收藏  举报