紅綠燈例子
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()