- Events不同线程之间同步对象
参数说明:
# 实例化event对象 event = threading.Event() # 等待检测标志位被设定,标志位设置后就不阻塞了 # 客户机线程可以等待设置标志 event.wait() # 设置一个全局变量标志位True event.set() # 清空全局变量False event.clear()
events模板:
通过Event来实现两个或多个线程间的交互,下面是一个红绿灯的例子,即起动一个线程做交通指挥灯,生成几个线程做车辆,车辆行驶按红灯停,绿灯行的规则。
标志位被设定,代表绿灯,直接同行,标志位清空,代表红灯,wait等待变绿等。每一量车都可以等待同一个事件。
6秒绿灯变红灯,4秒红灯变绿等,事件的连锁变化。
import time,threading # 生成event实例对象 event = threading.Event() # 设置红绿灯函数 def lighter(): # 设置变量0 count = 0 # 设置event为True 启动绿灯 event.set() while True: # 如果在5以上10一下就成立 if count >5 and count < 10: # 清空event为False,显示红灯 event.clear() print("