Python concurrent.futures模块使用实例
介绍
Python中的 concurrent.futures
模块提供了高级的异步编程接口,允许您在不需要显式地管理线程或进程的情况下编写并发代码。
该模块提供了 ThreadPoolExecutor
和 ProcessPoolExecutor
两个类,可以轻松地在多线程或多进程中执行函数。
安装
concurrent.futures
是 Python 3.x 自带的模块,可以直接使用。如果您使用的是 Python 2.x,请先使用 pip install futures
命令安装。
使用
使用 ThreadPoolExecutor
下面是一个简单的使用 ThreadPoolExecutor
的例子:
import concurrent.futures
import time
def square(n):
print(f"Calculating square of {n}...")
time.sleep(2)
return n**2
with concurrent.futures.ThreadPoolExecutor() as executor:
future1 = executor.submit(square, 5)
future2 = executor.submit(square, 6)
print(future1.result(), future2.result())
这段代码会创建一个 ThreadPoolExecutor
对象,并使用 submit()
方法向其提交两个任务。每个任务都会调用 square()
函数,并返回计算结果。
使用 ProcessPoolExecutor
下面是一个简单的使用 ProcessPoolExecutor
的例子:
import concurrent.futures
import time
def square(n):
print(f"Calculating square of {n}...")
time.sleep(2)
return n**2
with concurrent.futures.ProcessPoolExecutor() as executor:
future1 = executor.submit(square, 5)
future2 = executor.submit(square, 6)
print(future1.result(), future2.result())
这段代码与 ThreadPoolExecutor
的示例代码基本相同,只是创建的是 ProcessPoolExecutor
对象而不是 ThreadPoolExecutor
对象。这会导致任务在不同的进程中运行,而不是在同一个线程池中。
总结
concurrent.futures
模块提供了一种易于使用的方法来实现并发编程。通过使用 ThreadPoolExecutor
和 ProcessPoolExecutor
类,您可以轻松地在 Python 中编写具有高效性能的并发程序。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python concurrent.futures模块使用实例 - Python技术站