【发布时间】:2017-07-09 05:05:53
【问题描述】:
我无法理解 Python 3.6 中引入的异步推导的使用。作为免责声明,我没有太多在 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 在这样的理解中的基本机制?
【问题讨论】:
-
我也对异步生成器很好奇。行为相同还是不同?
标签: python asynchronous list-comprehension python-3.6