Asyncioを使った非同期プログラミング – Pythonで始めるプログラミング

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公式ドキュメント(外部リンク)を参照してください。

コメントを残す