gpt4 book ai didi

python - 从异步函数调用普通函数与从异步函数调用协程有什么区别?

转载 作者:行者123 更新时间:2023-12-03 16:48:17 26 4
gpt4 key购买 nike

  • async def caller():
    await bar()
    print("finish")

    async def bar():
    // some code here
  • async def caller():
    bar()
    print("finish")

    def bar():
    //some code here

  • 在上面的例子中。两种情况下,调用者都必须等待 bar() 完成。在这种情况下,bar 成为普通/协程有什么不同吗?如果我们想“等待”某些函数,为什么不使用普通函数。

    最佳答案

    不同的是在第二个例子中 bar()是一个非异步函数,所以它本身不能等待任何东西。例如,如果您想从 bar() 中访问 Web 服务。 ,在第一个示例中不会有问题,您只需使用 aiohttp .在第二个示例中,这几乎是不可能的,因为异步库需要从异步函数中使用,而非异步库将在等待响应时阻塞整个事件循环。

    If we want to "await" some functions, why not just use a normal function.


    如果您等待的函数不需要与外界通信(例如,如果它只是在 dict 中混洗数据),那么它可以并且应该是一个正常的函数。另一方面,如果它需要做IO,它应该是一个异步函数。

    关于python - 从异步函数调用普通函数与从异步函数调用协程有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63371561/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com