python threadpoolexecutor使用详解
时间: 2025-07-02 09:55:56 浏览: 14
### Python `ThreadPoolExecutor` 使用教程
#### 创建线程池并提交任务
为了创建一个线程池,可以从 `concurrent.futures` 导入 `ThreadPoolExecutor` 类。通过指定最大工作线程数初始化对象;如果不给出具体数值,默认情况下会根据系统的处理器数量决定合适的线程数目[^2]。
```python
from concurrent.futures import ThreadPoolExecutor, as_completed
def task(n):
"""模拟耗时操作的任务函数"""
import time
time.sleep(n)
return f"Task {n} completed"
with ThreadPoolExecutor(max_workers=5) as executor:
futures = []
# 提交多个异步任务到线程池中执行
for i in range(1, 6):
future = executor.submit(task, i)
futures.append(future)
```
#### 获取已完成的结果
一旦所有任务都被提交给线程池之后,就可以使用 `as_completed()` 函数迭代获取已经完成的任务结果。这允许按照实际完成顺序而非提交顺序收集各个任务的输出数据[^1]。
```python
for fut in as_completed(futures):
try:
print(fut.result()) # 输出每个任务的结果
except Exception as exc:
print('generated an exception:', exc)
```
#### 处理批量任务
对于大量相似的小型独立任务,还可以考虑使用 `map()` 方法一次性提交整个列表的任务,并自动等待全部完成后返回结果集合。这种方式非常适合于需要对一系列输入项应用相同逻辑的情形下使用。
```python
results = list(executor.map(task, [1]*10))
print(results)
```
#### 设置合理的线程池大小
合理配置线程池的最大尺寸非常重要。如果设置得太小,则可能导致资源浪费以及性能瓶颈;而设得过大又可能引起过多上下文切换开销甚至内存溢出等问题。因此,在实践中应当依据应用程序的具体需求来调整此参数[^4]。
阅读全文
相关推荐

















