1. 程式人生 > 實用技巧 >python threading.Event 方法使用,紅綠燈功能實現

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("\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()