我无法理解Python 3.6中引入的异步引入的使用。作为一个免责声明,我没有很多处理Python中异步代码的经验。Python异步解析 - 它们是如何工作的?
的what's new for Python 3.6文档中给出的例子是:
result = [i async for i in aiter() if i % 2]
在PEP,这是扩大到:
result = []
async for i in aiter():
if i % 2:
result.append(i)
我想据我所知,aiter()
函数被异步调用,这样aiter
的每次迭代都可以继续进行,而前一个必须返回(或者这种理解是错误的?)。
我不确定的是如何转化为这里的列表理解。结果是否按照它们返回的顺序放入列表中?或者在最终名单中是否有有效的“占位符”,以便每个结果以正确的顺序排列在列表中?或者我在想这个错误的方式?
此外,有人能够提供一个真实世界的例子,可以解释适用的用例和基本力学async
这样的理解?
我很好奇异步生成器。相同或不同的行为? –