\

Pythonのthreading.Eventは、スレッド間で通信を行うための最も単純なメカニズムの一つです。イベントオブジェクトは内部フラグを管理します。このフラグはset()メソッドで値をtrueに、clear()メソッドで値をfalseにリセットします。

import threading
import time

event = threading.Event()

def race():
    print("startしました。")
    event.wait()
    print("goalです。おめでとう!")

thread = threading.Thread(target=race)
thread.start()

time.sleep(1)
print("走っています")
time.sleep(1)
event.set()

上記のコードでは、threading.Eventをインスタンス化しています。event.wait()はフラグがtrueになるまでブロックします。event.set()はフラグをtrueに設定し、待機中のすべてのスレッドを解除します。

また、threading.Eventを繰り返し使用する場合には、clear()メソッドを呼んでイベントをクリアする必要があります。

def race():
    while True:
        print("startしました。")
        event.wait()
        print("goalです。おめでとう!もう一本!")
        event.clear()

このように、Pythonのthreading.Eventは、スレッド間で簡単に通信を行うための強力なツールです。適切に使用すれば、複数のスレッドを効率的に管理することが可能になります。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です