【问题标题】:Proper use of async正确使用异步
【发布时间】:2022-01-25 02:40:49
【问题描述】:

我有一个不需要异步的 main 函数,但是这个函数调用了其他几个确实需要异步的函数。

什么是更好的做法:使main异步并在if __name__ ...中调用asyncio.run(main()),或者最好不要使main异步(等待时与它无关)并调用@987654326 @ 用于从 main 进行的每个异步函数调用?

换句话说,是这样的:

async def func1():
    await something

async def func2():
    await something

async def main():
    x = input()
    if x == "y":
        await func1()
    else:
        await func2()

if __name__ == "__main__":
    asyncio.run(main())

或者这个:

async def func1():
    await something

async def func2():
    await something

def main():
    x = input()
    if x == "y":
        asyncio.run(func1())
    else:
        asyncio.run(func2())

if __name__ == "__main__":
    main()

【问题讨论】:

    标签: python async-await


    【解决方案1】:

    正如 Python docs 所说

    asyncio.run() 函数运行顶级入口点“main()”函数(参见上面的示例。)

    这主要是因为:

    当另一个异步事件循环在同一线程中运行时,无法调用此函数。

    所以,asyncio.run(main()) 的第一个示例更符合 Python 风格,应该使用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-10
      • 1970-01-01
      • 2021-01-24
      • 1970-01-01
      • 2019-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多