python线程池并发多任务怎样实现
在Python中,可使用concurrent.futures
模块来实现线程池并发多任务。concurrent.futures
模块提供了ThreadPoolExecutor
类来创建线程池,并且提供了一些方法来提交任务并获得结果。
下面是一个简单的示例代码,演示了怎样使用线程池并发履行多个任务:
import concurrent.futures
def task(n):
# 履行任务的函数,这里简单地打印任务编号
print(f"Task {n} executed")
return n
# 创建一个线程池,最多同时履行2个线程
with concurrent.futures.ThreadPoolExecutor(max_workers=2) as executor:
# 提交任务给线程池并获得Future对象
futures = [executor.submit(task, i) for i in range(5)]
# 获得任务的履行结果
for future in concurrent.futures.as_completed(futures):
result = future.result()
print(f"Task {result} completed")
在这个示例中,我们首先定义了一个task
函数,这个函数表示我们要履行的任务。然后,通过创建ThreadPoolExecutor
对象来创建一个线程池,指定最多同时履行2个线程。接下来,我们使用executor.submit()
方法将多个任务提交给线程池,并得到了一个Future对象的列表。最后,我们使用concurrent.futures.as_completed()
方法来循环迭代这些Future对象,并使用result()
方法获得任务的履行结果。
注意,ThreadPoolExecutor
类还提供了其他方法,如map()
方法可以用来将一个可迭代对象中的元素分发给线程池并获得结果。另外,还可使用submit()
方法的timeout
参数来设置超时时间,避免任务履行时间太长致使阻塞。
总结起来,使用concurrent.futures
模块的ThreadPoolExecutor
类可以很方便地实现线程池并发多任务。
TOP