**线程池是一组固定的、可复用的工作线程,它们从一个共享的工作队列中拉取任务。**它避免了为每个任务创建一个线程的开销,并给并发线程数设了上限。
为什么要用它
创建和销毁线程是昂贵的(栈分配、操作系统调度设置),而无限制地创建线程会耗尽内存并引发上下文切换的抖动。线程池摊薄了创建成本并限制了并发度。
text
任务 → [ 工作队列 ] → worker 1
worker 2 (N 个固定 worker 拉取并执行)
worker 3
示例
python
from concurrent.futures import ThreadPoolExecutor
with ThreadPoolExecutor(max_workers=8) as pool:
futures = [pool.submit(handle, req) req requests]
