Event是一个简单的同步的对象。
event = threading.Event() 生成event对象
event.set() 设置标志位
event.clear() 清空标志位
event.wait() 等待标志位被设定(阻塞)
event.is_set() 标志位是否被设定
红绿灯模型,假如设置了标志位代表绿灯,清空标志位代表红灯
#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秒