欢迎访问宙启技术站
智能推送

使用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()函数的基本用法,你可以根据实际需求对代码进行修改和扩展,从而实现更复杂的任务调度和结果处理逻辑。