如何利用taskpool执行多任务
在Python中,concurrent.futures
模块中的ThreadPoolExecutor
类可以用来执行多任务。下面是一个简单的例子:
from concurrent.futures import ThreadPoolExecutor
def task(n):
print(f"Task {n} is running")
return n * n
# 创建一个 ThreadPoolExecutor 实例
with ThreadPoolExecutor(max_workers=5) as executor:
# 提交一个或多个任务到 executor
future = executor.submit(task, 1)
# future 对象可以用来检查任务的状态或取消任务等操作
print(future.result()) # 输出: 1
在这个例子中,我们首先定义了一个任务函数 task
,然后创建了一个 ThreadPoolExecutor
实例。然后,我们使用 submit
方法提交了一个任务到 executor,并传入一个参数 1
。最后,我们打印出任务的结果。
请注意,max_workers
参数决定了线程池中的最大线程数。如果这个参数设置为 None
,那么线程池的大小将由操作系统的线程调度策略决定。
此外,还可以使用 map
方法一次性提交多个任务:
with ThreadPoolExecutor(max_workers=5) as executor:
results = executor.map(task, range(5)) # 提交5个任务到 executor
for result in results:
print(result) # 输出每个任务的结果
在这个例子中,我们使用 map
方法一次性提交了5个任务到 executor,并传入了一个范围 range(5)
作为参数。map
方法返回一个迭代器,我们可以遍历这个迭代器来获取每个任务的结果。
可以使用taskpool.execute接口,将创建好的任务组放入taskpool内部任务队列等待,等待分发到工作线程执行。
示例代码如下:
详细可以参考链接:taskpool.execute。