什么是 concurrent.futures 库?它在 Python 中的作用是什么以及如何使用它进行并发编程?
时间: 2024-12-02 08:22:13 浏览: 6
Python并发concurrent.futures和asyncio实例
`concurrent.futures`是Python标准库中的一部分,专为编写可维护、高效率的并发任务执行程序设计。它的主要作用是简化异步编程,特别是当处理大量计算密集型任务时,可以利用多核处理器的优势,提高代码的性能。
该库主要包括以下几个模块:
- `ThreadPoolExecutor`: 使用线程池来并行执行函数,适用于I/O密集型任务,因为它可以充分利用CPU核心。
- `ProcessPoolExecutor`: 使用进程池来并行执行函数,适用于计算密集型任务,因为每个进程都有独立的内存空间,避免了全局解释器锁(GIL)的影响。
使用`concurrent.futures`进行并发编程的基本步骤包括:
1. 创建`Executor`对象:这可以是`ThreadPoolExecutor`或`ProcessPoolExecutor`。
2. 提交任务:通过`submit()`方法提交一个函数到executor,并指定需要执行的函数及其参数。
3. 获取结果:任务完成后,你可以使用`result()`、`join()`等方法来获取结果或者等待所有任务完成。
示例代码:
```python
from concurrent.futures import ThreadPoolExecutor
def long_running_task(n):
# 模拟耗时操作
time.sleep(n)
return n * n
with ThreadPoolExecutor(max_workers=5) as executor:
future1 = executor.submit(long_running_task, 2)
future2 = executor.submit(long_running_task, 4)
print("Result of first task:", future1.result())
print("Result of second task:", future2.result())
```
在这个例子中,我们创建了一个线程池,然后提交两个任务,它们会在后台并行执行。当我们调用`result()`时,会阻塞直到相应的任务完成并返回结果。
阅读全文