python threading.Event 方法使用,红绿灯功能实现

import time,threading

event = threading.Event()

def lighter():
count =0
event.set()#先设置红绿灯,设置一个全局变量标志位
while True:
if count >5 and count<10:#改成红灯
event.clear()#把标志位清理,设置是TRUE,清空是false
print("33[41;1mred light is on ...33[0m")
elif count>10:
event.set()#变绿灯
count = 0
else:
print("33[42;1mgreen light is on ...33[0m")
time.sleep(1)
count +=1
def car(name):
while True:
if event.is_set():#代表绿灯
print("[%s] running ..."%name)
time.sleep(1)
else:
print("[%s] sees red light,waiting..."%name)
event.wait()#去检测,标志位没有设置,卡在这
print("33[34;1m[%s] green light is on ,start going ...33[0m"%name)

light = threading.Thread(target=lighter,)
light.start()

car1 = threading.Thread(target=car,args=('BMW',))
car1.start()
原文地址:https://www.cnblogs.com/anhao-world/p/13695574.html