使用task()函数实现任务结果的收集和汇总
发布时间:2024-01-18 09:45:38
task()函数是Python标准库中的一个函数,用于实现并行任务的调度和结果的收集和汇总。task()函数的主要作用是将一个可执行的任务封装成一个future对象,然后使用这个future对象来获取任务的结果。下面是使用task()函数实现任务结果的收集和汇总的示例代码:
import asyncio
async def worker(num):
print(f"Worker {num} starting...")
# 模拟一个耗时的任务
await asyncio.sleep(2)
print(f"Worker {num} done.")
return f"Result from worker {num}"
async def main():
tasks = []
# 创建10个任务
for i in range(10):
task = asyncio.create_task(worker(i))
tasks.append(task)
# 等待所有任务完成
results = await asyncio.gather(*tasks)
# 汇总任务结果
print("Task results:")
for i, result in enumerate(results):
print(f"Worker {i}: {result}")
asyncio.run(main())
在上面的示例中,我们定义了一个worker()函数,它表示一个耗时的任务,每个任务都接收一个参数num,并在打印一条开始信息后等待2秒,然后打印完成信息,并返回一个结果。
在main()函数中,我们使用for循环创建了10个并行任务,并将它们添加到一个任务列表tasks中。然后,我们使用asyncio.gather()函数等待所有任务完成,并将任务结果保存到列表results中。
最后,我们遍历结果列表results,并打印每个任务的结果。
运行上述代码,将输出如下结果:
Worker 0 starting... Worker 1 starting... Worker 2 starting... Worker 3 starting... Worker 4 starting... Worker 5 starting... Worker 6 starting... Worker 7 starting... Worker 8 starting... Worker 9 starting... Worker 0 done. Worker 1 done. Worker 2 done. Worker 3 done. Worker 4 done. Worker 5 done. Worker 6 done. Worker 7 done. Worker 8 done. Worker 9 done. Task results: Worker 0: Result from worker 0 Worker 1: Result from worker 1 Worker 2: Result from worker 2 Worker 3: Result from worker 3 Worker 4: Result from worker 4 Worker 5: Result from worker 5 Worker 6: Result from worker 6 Worker 7: Result from worker 7 Worker 8: Result from worker 8 Worker 9: Result from worker 9
从输出结果可以看出,task()函数确实实现了任务结果的收集和汇总。每个任务按照创建的顺序依次开始和完成,最后打印出了每个任务的结果。
这个示例展示了task()函数的基本用法,你可以根据实际需求对代码进行修改和扩展,从而实现更复杂的任务调度和结果处理逻辑。
