セマフォはしばしば、容量に限りのある資源、例えばデータベースサーバなど を保護するために使われます。リソースのサイズが固定の状況では、常に 有限セマフォを使わねばなりません。主スレッドは、作業スレッドを 立ち上げる前にセマフォを初期化します:
maxconnections = 5 ... pool_sema = BoundedSemaphore(value=maxconnections)
作業スレッドは、ひとたび立ち上がると、サーバへ接続する必要が 生じたときにセマフォのacquire およびrelease メソッドを呼び出します:
pool_sema.acquire() conn = connectdb() ... use connection ... conn.close() pool_sema.release()
有限セマフォを使うと、セマフォを獲得回数以上に解放してしまうという プログラム上の間違いを見逃しにくくします。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。