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は、スレッド間で簡単に通信を行うための強力なツールです。適切に使用すれば、複数のスレッドを効率的に管理することが可能になります。