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

使用gather()函数实现多个协程任务的批量执行

发布时间:2023-12-25 23:00:13

在Python的asyncio模块中,我们可以使用gather()函数来实现多个协程任务的批量执行。gather()函数可以接受一个或多个协程对象,然后一起执行它们,并且返回一个协程对象,可以通过await来等待它的执行结果。

下面是一个使用gather()函数的示例:

import asyncio

async def task1():
    print("Task 1 Start")
    await asyncio.sleep(1)  # 模拟耗时操作
    print("Task 1 End")
    return "Task 1 Result"

async def task2():
    print("Task 2 Start")
    await asyncio.sleep(2)  # 模拟耗时操作
    print("Task 2 End")
    return "Task 2 Result"

async def main():
    print("Main Start")
    tasks = [task1(), task2()]  # 创建任务列表
    results = await asyncio.gather(*tasks)  # 执行任务列表
    print("Results:", results)
    print("Main End")

asyncio.run(main())

在上面的示例中,我们定义了两个协程任务task1和task2,它们分别模拟了耗时1秒和2秒的操作。然后在main()函数中,我们使用gather()函数将task1和task2这两个协程任务一起执行,并将返回的结果保存在results变量中。最后打印出results的值。

运行上述代码,输出结果如下:

Main Start
Task 1 Start
Task 2 Start
Task 1 End
Task 2 End
Results: ['Task 1 Result', 'Task 2 Result']
Main End

从输出结果可以看出,task1和task2任务在异步执行过程中,并行进行,而不是依次执行。因此总的耗时只有2秒,而不是3秒。

正是因为gather()函数的特性,我们可以在并发执行的异步操作中,将多个耗时任务同时提交给事件循环执行,提高程序的运行效率。