2017-02-20 2 views
25

Python 3.6で導入された非同期式の理解を理解することができません。免責事項として、私はPythonで一般的に非同期コードを扱う経験はあまりありません。Python Asynchronous Comprehensions - どのように動作しますか?

what's new for Python 3.6文書で与えられた例は次のとおりです。PEP

result = [i async for i in aiter() if i % 2] 

が、これはに展開されます。私はaiter()関数は非同期に呼び出されることを理解思い

result = [] 
async for i in aiter(): 
    if i % 2: 
     result.append(i) 

aiterの各反復は、前のものが必ず戻ってくることなく進めることができます(または、この理解は間違っていますか?)。

私がよく分からないことは、それがここでリストの理解にどのように変換されるかです。結果は返された順序でリストに入れられますか?または、最終的なリストに有効な「プレースホルダー」があるので、各結果が正しい順序でリストに配置されますか?それとも私は間違った方法を考えていますか?

また、適用可能なユースケースと基本的なメカニック(async)の両方をこのように理解している現実世界の例を提供できる人はいますか?

+0

私は非同期ジェネレータについても興味があります。同じ振る舞い、違う? –

答えて

関連する問題