ホームページ >バックエンド開発 >Python チュートリアル >Python Semaphore(セマフォ)とは何ですか? (詳細な例)

Python Semaphore(セマフォ)とは何ですか? (詳細な例)

乌拉乌拉~
乌拉乌拉~オリジナル
2018-08-23 17:42:116671ブラウズ

次の記事では、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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

関連記事

続きを見る