Python 18.3 async/await
1069 ワード
async/await
非同期IOを簡略化し、よりよく識別するために、Python 3.5から新しい構文は
前のセクションのコードを比較してみましょう.
新しい構文で次のように書き直します.
残りのコードは変わらない.
小結
Pythonは3.5バージョンから
注意新しい構文はPython 3.5以降のバージョンでのみ使用できますが、3.4バージョンを使用する場合は、前節のシナリオを使用する必要があります.
asyncio
で提供される@asyncio.coroutine
は、1つのgeneratorをcoroutineタイプとしてマークし、coroutine内部でyield from
で別のcoroutineを呼び出して非同期動作を実現することができる.非同期IOを簡略化し、よりよく識別するために、Python 3.5から新しい構文
async
とawait
が導入され、coroutineのコードをより簡潔に読みやすくすることができます.async
とawait
はcoroutineの新しい構文です.新しい構文を使用するには、2つのステップで簡単に置き換える必要があります.@asyncio.coroutine
をasync
に置き換えた.yield from
をawait
に置き換えます.前のセクションのコードを比較してみましょう.
@asyncio.coroutinedef hello():
print("Hello world!")
r = yield from asyncio.sleep(1)
print("Hello again!")
新しい構文で次のように書き直します.
async def hello():
print("Hello world!")
r = await asyncio.sleep(1)
print("Hello again!")
残りのコードは変わらない.
小結
Pythonは3.5バージョンから
asyncio
にasync
とawait
の新しい文法を提供した.注意新しい構文はPython 3.5以降のバージョンでのみ使用できますが、3.4バージョンを使用する場合は、前節のシナリオを使用する必要があります.