使用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()函数的特性,我们可以在并发执行的异步操作中,将多个耗时任务同时提交给事件循环执行,提高程序的运行效率。
