寻求解释与/异步的优点

我是asyncio的新手。我最近遇到了AIOFiles(https://github.com/Tinche/aiofiles),并在文档中看到它支持“与...异步”和“与...异步”。我想了解一下它,但是除了PEP 492并没有太多细节之外,关于它的覆盖范围还很小。

PEP 492相关部分的快捷方式:

https://www.python.org/dev/peps/pep-0492/#asynchronous-context-managers-and-async-with

https://www.python.org/dev/peps/pep-0492/#asynchronous-iterators-and-async-for

如果有人不介意回答,我有很多问题:

  1. 我要了解的异步迭代器/上下文管理器的唯一明显好处是,您可以在其所需魔术方法的实现中使用waiting。我是否想念某些东西?

  2. 在有关异步上下文管理器的PEP 492中,它说:“异步上下文管理器是能够在其enter和exit方法中挂起执行的上下文管理器。”这是指使用等待调用协程吗?

yarphy90 回答:寻求解释与/异步的优点

  

我要了解的异步迭代器/上下文管理器的唯一可识别的好处是,您可以在其所需魔术方法的实现中使用awaitables。我是否想念某些东西?

除了悬架功能的重要性外,您什么都不会错过。没有可悬挂的魔术方法,上下文管理器和迭代器将对异步工作毫无用处。例如,常规文件对象用作从文件生成行的迭代器。为了使异步文件对象(或流)提供等效的功能,它必须能够等待行的到来,从而挂起对其进行迭代的协程。这同样适用于上下文管理器,其进入必须建立异步网络连接,依此类推。

  

[能够暂停执行]是指使用等待调用协程吗?

await中使用async def是中止执行的一种方法。 __aenter__等的另一种选择是普通函数,这些函数返回实现自己的__await__的自定义等待状态。 PEP 492从使用上下文管理器的代码的最高角度描述了功能,必须准备好挂起其魔术方法-async with必须在async def内部,并且它将解糖以进行编码await位于适当的位置。

本文链接:https://www.f2er.com/3154990.html

大家都在问