次の記事では、Python のセマフォ (セマフォ) とは何かについて学びます。 Python セマフォと、Python プログラミングでセマフォが果たせる役割について学びます。
セマフォ(セマフォ)
ミューテックスでは同時に 1 つのスレッドのみがデータを変更できますが、セマフォでは一定数のスレッドが同時にデータを変更できます。例えば、トイレは3つありますが、なんとトイレは最大3人までしか入れず、後ろの人は誰かが出てきてからしか入れません。
import threading,time def run(n): semaphore.acquire() time.sleep(1) print("run the thread: %s\n" %n) semaphore.release() if __name__ == '__main__': num= 0 semaphore = threading.BoundedSemaphore(5) #最多允许5个线程同时运行 for i in range(20): t = threading.Thread(target=run,args=(i,)) t.start() while threading.active_count() != 1: pass #print threading.active_count() else: print('----all threads done---') print(num)
イベントのスレッド間通信
Python は、スレッド間通信用の Event オブジェクトを提供します。これは、スレッドによって設定されるシグナル フラグです。シグナルフラグが true の場合、他のスレッドはシグナルがタッチされるまで待機します。
イベントオブジェクトは、スレッド間の通信を実現するためのシグナルの設定、シグナルのクリア、待機などを提供する単純なスレッド通信機構を実装しています。
#イベントの使用法
event = threading.Event()
##event.wait( )Event オブジェクトの wait メソッドは、内部信号が true の場合にのみ迅速に実行され、戻りを完了します。 Event オブジェクトの内部シグナル フラグが false の場合、wait メソッドは true になるまで待機してから戻ります。
event.set()
Event の set() メソッドを使用して、Event オブジェクト内のシグナル フラグを true に設定します。 Event オブジェクトは、内部信号フラグのステータスを決定するための isSet() メソッドを提供します。イベント オブジェクトの set() メソッドを使用すると、isSet() メソッドは true を返します
event.clear()
Event オブジェクト clear() メソッドは、Event オブジェクト内のシグナルフラグをクリア、つまり false に設定することができます。Event の clear メソッドを使用すると、isSet() メソッドは false を返します。
以上がこの記事の内容です。この記事では主にpythonSemaphore(セマフォ)
の関連知識を紹介します。上記の内容を理解するために活用していただければ幸いです。この記事で説明したことがあなたのお役に立ち、Python の学習が容易になることを願っています。関連知識の詳細については、php 中国語 Web サイトの Python チュートリアル
列を参照してください。以上がPython Semaphore(セマフォ)とは何ですか? (詳細な例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。