我無法理解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
這樣的理解?
我很好奇異步生成器。相同或不同的行爲? –