ThreadPoolExecutor.submit多个任务汇总
时间: 2023-08-17 19:11:24 浏览: 95
您好!要将多个任务汇总,您可以使用`ThreadPoolExecutor.submit()`方法来提交任务,并使用`concurrent.futures.as_completed()`函数来迭代已完成的任务。
下面是一个示例代码,展示了如何使用`ThreadPoolExecutor`来执行多个任务并汇总结果:
```python
import concurrent.futures
def task_func(task_id):
# 这里是每个任务的具体逻辑
# 假设每个任务返回一个整数
return task_id * 2
def main():
num_tasks = 10
results = []
# 创建一个线程池
with concurrent.futures.ThreadPoolExecutor() as executor:
# 提交任务到线程池
futures = [executor.submit(task_func, i) for i in range(num_tasks)]
# 迭代已完成的任务并获取结果
for future in concurrent.futures.as_completed(futures):
result = future.result()
results.append(result)
# 输出汇总结果
print("汇总结果:", results)
if __name__ == '__main__':
main()
```
上述代码中,`task_func()`函数表示每个任务的具体逻辑。在`main()`函数中,首先创建了一个线程池`ThreadPoolExecutor()`,然后使用`submit()`方法将任务提交到线程池中。接着使用`as_completed()`函数迭代已完成的任务,并通过`result()`方法获取每个任务的结果。最后,将结果添加到`results`列表中并输出。
请注意,`ThreadPoolExecutor`是使用线程来执行任务的,如果您需要使用进程来执行任务,可以使用`ProcessPoolExecutor`。同时,请根据您的具体需求来选择合适的线程数或进程数。
阅读全文