python event对象
用于线程间通信,即程序中的其一个线程需要通过判断某个线程的状态来确定自己下一步的操作,就用到了event对象
event对象默认为假(Flase),即遇到event对象在等待就阻塞线程的执行。
import threading,time
class Boss(threading.Thread):
def run(self):
print("老板:今天我不说走,谁都别走,耶稣也救不了他,我说的!")
print(event.isSet())# False
event.set()
time.sleep(5)
print("老板:可以走了。")
print(event.isSet())# False 被员工那clear了
event.set()
class Worker(threading.Thread):
def run(self):
event.wait() # 一旦event被设定,等同于pass
event.clear()
print("员工:等着啊,等着。。。。。")
time.sleep(1)
event.wait()
print("员工:终于可以走了!")
if __name__=="__main__":
event=threading.Event()
threads=[]
for i in range(5):
threads.append(Worker())
threads.append(Boss())
for t in threads:
t.start()
for t in threads:
t.join()
print("ending.....")
总结:这个event等于是创建了手动重置,需要手动clear.
Java中Object的notify和wait和这个玩意也很类似,其他语言转过来的就这么理解就行。.
C/C++用过kevent或者event内核对象的,都不差多,转python知道有这个event对象即可。