python函数pool
时间: 2025-01-09 11:50:40 浏览: 2
### Python 中 `Pool` 函数的使用方法
#### 线程池 (ThreadPool)
线程池通过创建一定数量的工作线程来处理并发任务。这有助于减少频繁创建和销毁线程带来的开销。
```python
from concurrent.futures import ThreadPoolExecutor, as_completed
def task(n):
return n * n
with ThreadPoolExecutor(max_workers=3) as executor:
futures = {executor.submit(task, i): i for i in range(5)}
for future in as_completed(futures):
print(f'Future result: {future.result()}')
```
此代码片段展示了如何定义一个简单的任务函数,并利用 `ThreadPoolExecutor` 来异步执行多个实例[^1]。
#### 进程池 (ProcessPool)
对于CPU密集型的任务,推荐使用进程池而不是线程池,这是因为Python中的全局解释器锁(GIL),它使得在同一时间只能有一个原生线程运行于CPython虚拟机中。而多进程则不受GIL的影响,能够更好地发挥多核处理器的优势。
```python
from concurrent.futures import ProcessPoolExecutor
def cpu_bound_task(x):
total = sum(i * i for i in range(10 ** 7))
return total
if __name__ == '__main__':
with ProcessPoolExecutor() as executor:
results = list(executor.map(cpu_bound_task, range(5)))
print(results)
```
这段代码说明了怎样设置一个进程池去分配耗时较长的计算给不同的子进程中完成[^2]。
#### 主要区别
- 对于I/O 密集型操作(比如网络请求、磁盘读写),应该优先考虑使用线程池。
- 当面对的是CPU密集型运算时,则应选择进程池以避开GIL造成的性能瓶颈。
阅读全文