如果您不等待异步功能怎么办?

时间:2020-03-29 02:23:08

标签: python async-await python-asyncio coroutine

如果我不使用await来调用异步函数,我将获得一个协程。在这种情况下,协程会发生什么?我必须手动执行协程吗?还是这个协程将继续在后台运行?

使用await

async def work():
    result = await stuff()

没有await

async def work():
     result = stuff()

1 个答案:

答案 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

相关问题