use*_*968 7 python coroutine async-await python-asyncio
如果我不使用await调用异步函数,我将返回一个协程。那么,协程会发生什么情况呢?我必须手动执行协程吗?或者这个协程将继续在后台运行?
使用await
async def work():
result = await stuff()
Run Code Online (Sandbox Code Playgroud)
没有await
async def work():
result = stuff()
Run Code Online (Sandbox Code Playgroud)
来自官方文档:
请注意,简单地调用协程不会安排其执行:
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())
Run Code Online (Sandbox Code Playgroud)
要了解更多信息,我建议阅读 https://docs.python.org/3/library/asyncio-task.html