如果我不使用await
来调用异步函数,我将获得一个协程。在这种情况下,协程会发生什么?我必须手动执行协程吗?还是这个协程将继续在后台运行?
使用await
async def work():
result = await stuff()
没有await
async def work():
result = stuff()
答案 0 :(得分:2)
摘自官方文档:
请注意,仅调用协程将不会安排其执行:
这意味着您实际上并未调用函数,因此,如果没有在函数调用之前放置await
,就不会等待任何东西。
您可以改用asyncio
为其安排一个任务或许多任务:
import asyncio
async def main():
loop = asyncio.get_event_loop()
t1 = loop.create_task(stuff())
t2 = loop.create_task(stuff())
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
要了解更多信息,我建议阅读 https://docs.python.org/3/library/asyncio-task.html