以下の内容はhttps://ryuichi1208.hateblo.jp/entry/2025/10/05/015646より取得しました。


【Python】asyncio.Semaphore

asyncio.Semaphore は、非同期プログラムでのリソースの制限を管理するために使用される同期プリミティブです。セマフォは、リソースの同時アクセス数を制限するために用いられます。asyncio.Semaphore は非同期タスクがリソースを安全に共有できるようにするため、特にIO操作や並行処理が多い場合に役立ちます。

基本的な概念

セマフォは、指定された数の許可(「トークン」)を保持しており、リソースを使用するにはトークンを取得する必要があります。リソースを使用し終わると、そのトークンを返却します。これにより、同時にリソースを使用できるタスクの数が制限されます。

使用方法

import asyncio

# セマフォの作成(最大同時実行数は3)
semaphore = asyncio.Semaphore(3)

async def access_resource(task_id):
    async with semaphore:
        print(f"Task {task_id} is accessing the resource")
        await asyncio.sleep(2)  # リソースにアクセス中(非同期操作)
        print(f"Task {task_id} has finished using the resource")

async def main():
    # タスクを並行して実行
    tasks = [access_resource(i) for i in range(5)]
    await asyncio.gather(*tasks)

# 非同期実行
asyncio.run(main())



以上の内容はhttps://ryuichi1208.hateblo.jp/entry/2025/10/05/015646より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14