红绿灯例子
Event的用法
import threading,timeevent=threading.Event()def lighter():timesec=0event.set()while True:if 5<timesec<=10:event.clear()print("红灯亮")elif timesec>10:event.set()timesec=0else:print("绿灯亮")time.sleep(1)timesec+=1def car(name):while True:if event.is_set():print(f"{name}正在行驶...")time.sleep(1)else:print(f"{name}看红灯亮")event.wait()print(f"--{name}绿灯亮")light=threading.Thread(target=lighter,)
light.start()
car=threading.Thread(target=car,args=('mini',))
car.start()
等同方案:
import threading,timeevent=False #Eventdef lighter():timesec=0global eventevent=Truewhile True:if 5<timesec<=10:event=False #event.clear()print("-红灯亮")else: #可以用elif那部分 ,这放在了下面if中if timesec>10:event=True #相当于event.set()timesec=0print("-绿灯亮")time.sleep(1)timesec+=1def car(name):global eventwhile True:if event: #相当于event.is_set()print(f"{name}正在行驶...")else:print(f"{name}看红灯亮")while not event: #替换event.wait()if event:breaktime.sleep(0.5)print(f"{name}看绿灯亮")time.sleep(1)light=threading.Thread(target=lighter,)
light.start()
car=threading.Thread(target=car,args=('mini',))
car.start()