Pythonにおける非同期コールバックの仕組みは?
Pythonでは、asyncioモジュールで非同期コールバックを実現できます。asyncioは、Python 3.4以降に組み込まれている非同期IOフレームワークです。
以下に非同期コールバックを使った、並列に複数のタスクを実行する方法の簡単な例を示します。
import asyncio
# 定义一个异步函数
async def async_task(task_id):
print(f"Start task: {task_id}")
# 模拟任务执行耗时
await asyncio.sleep(1)
print(f"Finish task: {task_id}")
# 定义回调函数
def callback(future):
print(f"Task done: {future.result()}")
# 创建事件循环
loop = asyncio.get_event_loop()
# 创建多个任务
tasks = []
for i in range(5):
task = loop.create_task(async_task(i))
task.add_done_callback(callback)
tasks.append(task)
# 并发执行任务
loop.run_until_complete(asyncio.wait(tasks))
# 关闭事件循环
loop.close()
上記の例では、非同期関数の `async_task` を定義し、1秒かかるような時間のかかるタスクをシミュレートしました。次に、イベントループを作成し、create_task メソッドを使用してタスクをいくつか作成し、add_done_callback メソッドを使用して各タスクにコールバック関数 `callback` を追加しました。最後に、run_until_complete メソッドを呼び出し、タスクリストを渡してタスクを非同期に実行しました。
各タスクが完了した際に、コールバック関数が呼び出され、タスクの結果が出力されます。
非同期コールバックを使用する際には、非同期関数を実行するためにイベントループに追加する必要があることに注意してください。この機能が非同期に動作します。