15.3.4.1 Semaphore の例

セマフォはしばしば、容量に限りのある資源、例えばデータベースサーバなど を保護するために使われます。リソースのサイズが固定の状況では、常に 有限セマフォを使わねばなりません。主スレッドは、作業スレッドを 立ち上げる前にセマフォを初期化します:

maxconnections = 5
...
pool_sema = BoundedSemaphore(value=maxconnections)

作業スレッドは、ひとたび立ち上がると、サーバへ接続する必要が 生じたときにセマフォのacquire およびrelease メソッドを呼び出します:

pool_sema.acquire()
conn = connectdb()
... use connection ...
conn.close()
pool_sema.release()

有限セマフォを使うと、セマフォを獲得回数以上に解放してしまうという プログラム上の間違いを見逃しにくくします。

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。