python threading.Event 方法使用,紅綠燈功能實現
阿新 • • 發佈:2020-09-19
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("\033[41;1mred light is on ...\033[0m")
elif count>10:
event.set()#變綠燈count = 0
else:
print("\033[42;1mgreen light is on ...\033[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("\033[34;1m[%s] green light is on ,start going ...\033[0m"%name)
light = threading.Thread(target=lighter,)
light.start()
car1 = threading.Thread(target=car,args=('BMW',))
car1.start()