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 メソッドを呼び出し、タスクリストを渡してタスクを非同期に実行しました。

各タスクが完了した際に、コールバック関数が呼び出され、タスクの結果が出力されます。

非同期コールバックを使用する際には、非同期関数を実行するためにイベントループに追加する必要があることに注意してください。この機能が非同期に動作します。

bannerAds