1. 程式人生 > >python之Event事件標誌

python之Event事件標誌

Event:

Event就是一個線上程裡的標誌,隨時可以切換

event = threading.Event()

 

設定標誌位:event.set()

清除標誌:event.clear()

判斷是否設定標誌位:event.is_set()

等待被設定:event.wait()

 

模擬紅綠燈來使用一下event:

標誌位設定了,代表綠燈,直接通行

標誌位被清空,代表紅燈,wait等待變綠燈

'''紅綠燈'''
import threading,time

#event就是一個線上程裡的標誌,隨時可以切換
event = threading.Event()

def Lighter():
    count=0
    event.set()
    while True:
        if count > 3 and count <= 6:  #30-60秒為紅燈
            event.clear()   #清除,變成紅燈
            print("\033[41;1m紅燈亮\033[0m")
        elif count > 6:
            event.set() #變成綠燈
            count = 0   #重置計時器
        else:
            print("\033[42;1m綠燈亮\033[0m")
        time.sleep(1);
        count += 1

def Car(name):
    while True:
        if event.is_set():
            print(name,'開車')
            time.sleep(1)
        else:
            print(name,'停車')
            time.sleep(1)

light = threading.Thread(target=Lighter,)
light.start()
car = threading.Thread(target=Car,args=('寶馬',))
car.start()