在使用asyncio
框架时,可以使用asyncio.gather()
函数来等待并运行所有的协程。这个函数接受一系列的协程对象作为参数,并返回一个包含所有协程返回值的列表。
以下是一个示例代码,演示了如何使用asyncio.gather()
函数等待并运行所有的协程:
import asyncio
async def coroutine1():
await asyncio.sleep(1)
print("Coroutine 1")
async def coroutine2():
await asyncio.sleep(2)
print("Coroutine 2")
async def coroutine3():
await asyncio.sleep(3)
print("Coroutine 3")
async def main():
tasks = [
asyncio.create_task(coroutine1()),
asyncio.create_task(coroutine2()),
asyncio.create_task(coroutine3())
]
await asyncio.gather(*tasks)
asyncio.run(main())
在上面的示例中,我们定义了三个协程函数coroutine1()
,coroutine2()
和coroutine3()
,每个协程函数都会等待一段时间后打印一条消息。然后我们在main()
函数中创建了三个协程任务,并使用asyncio.gather()
函数来等待并运行所有的协程。最后,我们使用asyncio.run()
函数来运行main()
函数。
当我们运行上面的代码时,会按照定义的顺序依次打印出三个协程的消息,并且总执行时间会等于最长等待时间的协程的等待时间。
通过使用asyncio.gather()
函数,我们可以等待并运行所有的协程,确保每个协程都得到执行。