Asyncioを使った非同期プログラミング – Pythonで始めるプログラミング
Pythonは多くの優れたライブラリとフレームワークを提供しており、その中でもasyncio
は非同期プログラミングにおいて非常に便利です。本記事では、asyncioを使った非同期プログラミングについて説明します。
非同期プログラミングとは
非同期プログラミングは、タスクを同時に実行するためのプログラミング手法です。さらに、これによりシステムのパフォーマンスを向上させることができます。
非同期プログラミングは、一つのタスクが実行されている間に他のタスクがブロックされることを防ぎます。
Python公式ドキュメント
Asyncioの基本
asyncio
はPythonの標準ライブラリで、非同期I/O、イベントループ、タスク、コルーチンをサポートします。以下に基本的な使用例を示します:
import asyncio
async def say_hello():
print("Hello")
await asyncio.sleep(1)
print("World")
asyncio.run(say_hello())
上記の例では、say_hello
という非同期関数を定義し、それをasyncio.run
で実行しています。
非同期関数とawait
非同期関数はasync def
で定義され、await
キーワードを用いて他の非同期関数を呼び出します。例えば:
async def fetch_data():
await asyncio.sleep(2)
return "Data fetched"
この関数は2秒の遅延後にデータを返します。await
により、イベントループが他のタスクを処理できるようになります。
実用例
非同期関数を組み合わせて、より複雑な非同期処理を行うことができます。例えば、複数のタスクを並行して実行する場合:
async def download_file(file):
print(f"Downloading {file}...")
await asyncio.sleep(3)
print(f"{file} downloaded.")
async def main():
tasks = [download_file("File1.txt"), download_file("File2.txt")]
await asyncio.gather(*tasks)
asyncio.run(main())
上記のコードは、download_file
関数を2つのタスクとして並行して実行します。asyncio.gather
を使うことで、タスクを同時に実行できます。
まとめ
非同期プログラミングは、多くの実世界のアプリケーションで応用されています。asyncio
を使用することで、Pythonで容易に非同期処理を実現できます。さらに詳細な情報はPython公式ドキュメント(外部リンク)を参照してください。