不“等待”的协程与函数有什么不同吗?

2024-05-29 05:59:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道有什么理由声明一段代码,它不作为await任何东西而不是async def(协同程序)而不是def(函数)?Python明确允许这样做。你知道吗

def i_am_sync():
    return 42

async def i_am_async():
    return 42

我知道coroutine版本可以安排在事件循环上,但我无法想象这有什么实际应用,因为您可以直接调用同步代码?你知道吗


Tags: 函数代码版本声明asyncreturndef事件
1条回答
网友
1楼 · 发布于 2024-05-29 05:59:22

如果函数不包含异步内容,并且您认为它将保持这种方式,则无需声明它async。有人可能会说,最好不要无缘无故地使函数异步,因为这样可以更好地将sync world与async分开(如果您真的对原因感兴趣,您可能想阅读this article,特别是总结“如何使用有色函数”)。你知道吗

但是请注意,“异步的东西”可能不仅仅是一些与网络I/O相关的东西,还有其他一些东西,比如CPU繁重的操作或磁盘I/O,您可能需要run in thread or process and await for the result。你知道吗

相关问题 更多 >

    热门问题