Pythonの非同期処理について理解するためには、async
とawait
のキーワードが重要です。これらのキーワードはPython3.5から導入され、非同期処理をより直感的に書くことができるようになりました。
asyncとawaitの基本
まず、async def
を使って非同期関数を定義します。この非同期関数はコルーチンオブジェクトを返し、このオブジェクトはイベントループ内でのみ実行可能です。
import asyncio
async def hello_world():
print("Hello World!")
loop = asyncio.get_event_loop()
loop.run_until_complete(hello_world())
上記のコードでは、hello_world
関数を定義し、イベントループで実行しています。
次に、await
を使って非同期関数から返されたコルーチンオブジェクトを実行します。
import asyncio
async def hello_world():
print("Hello World!")
async def call_hello_world():
await hello_world()
loop = asyncio.get_event_loop()
loop.run_until_complete(call_hello_world())
上記のコードでは、call_hello_world
関数内でhello_world
関数を呼び出し、その結果を待っています。
asyncio.wait_forとasyncio.waitの使い方
asyncio.wait_for
関数は、指定したタスクまたはコルーチンが完了するのを待つことができます。タイムアウトが指定されていない場合、タスクが完了するまで待ちます。タイムアウトが指定されていて、その時間が経過するとタスクはキャンセルされます。
一方、asyncio.wait
関数は、複数のタスクまたはコルーチンを並行して実行することができます。
以上がPythonの非同期処理におけるasync
とwait
の基本的な使い方です。これらの理解は、非同期処理を効果的に利用するための第一歩となります。