实现线程与线程之间的交互。主要方法有:
threading.Event():实例化
event.set():设置标志位
event.clear():清除标志位
event.is_set():判断标志位是否被设置
event.wait():等待标志位被设置
交通信号灯举例:
import threading,time event = threading.Event() event.set() # Firstly, green light on def light(): count = 0 event.set() while True: if count < 10: # change green light event.set() print("\033[42;1mGreen light is on...\033[0m") elif count < 13: # change yellow light print("\033[43;1mYellow light is on...\033[0m") elif count < 20: # change red light event.clear() print("\033[41;1mRed light is on...\033[0m") else: count = 0 time.sleep(0.5) count += 1 def car(name): while True: if event.is_set(): print("[%s] running..." % name) time.sleep(1) else: print("[%s] waiting green light on..." % name) event.wait() print("\033[42;1mGreen light is on, [%s] running...\033[0m" % name) light = threading.Thread(target=light) light.start() car = threading.Thread(target=car,args=('DiDi',)) car.start()
posted on
浙公网安备 33010602011771号