Event是一個簡單的同步的對象。spa
event = threading.Event() 生成event對象code
event.set() 設置標誌位orm
event.clear() 清空標誌位對象
event.wait() 等待標誌位被設定(阻塞)blog
event.is_set() 標誌位是否被設定utf-8
紅綠燈模型,假如設置了標誌位表明綠燈,清空標誌位表明紅燈get
#coding=utf-8 import threading import time event = threading.Event() def lighter(): n = 1 while True: if n > 10 and n <= 20: event.set() print u'綠燈亮了{}秒'.format(n - 10) elif n > 20: event.clear() n = 0 else: print u'紅燈亮了{}秒'.format(n) n += 1 time.sleep(1) def car(): while True: if event.is_set(): print u'行駛中...' else: print u'紅燈亮,車停了' event.wait() print u'綠燈亮,車繼續跑' time.sleep(1) tl = threading.Thread(target=lighter) tl.start() tc = threading.Thread(target=car) tc.start()
紅燈亮了1秒
紅燈亮,車停了
紅燈亮了2秒
紅燈亮了3秒
紅燈亮了4秒
紅燈亮了5秒
紅燈亮了6秒
紅燈亮了7秒
紅燈亮了8秒
紅燈亮了9秒
紅燈亮了10秒
綠燈亮了1秒綠燈亮,車繼續跑
行駛中...綠燈亮了2秒
行駛中...綠燈亮了3秒
行駛中...綠燈亮了4秒
綠燈亮了5秒行駛中...
行駛中...綠燈亮了6秒
行駛中...綠燈亮了7秒
行駛中...綠燈亮了8秒
行駛中...綠燈亮了9秒
行駛中...綠燈亮了10秒
行駛中...
紅燈亮了1秒同步