Pythonで非同期タスクをどのように実装しますか?
Pythonではコルーチンや非同期IOを用いて非同期処理を実現できる。
まず非同期処理を実行する関数を coroutine functionとしてasyncキーワードで定義し、非同期処理の結果をawaitキーワードで待つようにします。coroutine functionはasyncioモジュールのイベントループで実行をスケジューリングできます。
非同期タスクの実装のための協調ルーチンの使用例を以下に示します。
import asyncio
async def async_task():
print("Start async task")
await asyncio.sleep(1) # 模拟耗时操作
print("Async task completed")
async def main():
print("Start main function")
await asyncio.gather(async_task(), async_task()) # 并发执行两个异步任务
print("Main function completed")
# 创建一个事件循环并运行主函数
asyncio.run(main())
上記のサンプルでは、async_task 関数は、非同期的なタスクであり、await asyncio.sleep(1) 文を使用して、時間のかかる処理をシミュレートしています。main 関数はコルーチン関数であり、await asyncio.gather() を使用して、複数の非同期タスクを並列して実行しています。
上記のコードを実行すると、以下のような出力が得られます。
Start main function
Start async task
Start async task
Async task completed
Async task completed
Main function completed
コルーチンを使用した非同期タスクの実装の基本的な方法でした。非同期タスクを複数実行する必要がある場合は、asyncio.gather() 関数を使用してこれらのタスクを同時に実行できます。さらに、asyncio.wait() 関数を使用して、一連の非同期タスクの完了を待つこともできます。