Event对象用于线程间的相互通信,实际上Condition对象在一定程度上已经实现线程间的通信,但Condition对象是每次仅有一个线程对共享数据进行操作,其他线程则等待。而Event对象是由线程设置的信号标志,如果信号标志为真,则其他线程等待直到信号解除。
Event对象方法:
set():设置Event对象内部的信号为真,
isSet():判断内部信号标志的状态,当Event对象使用set()方法后,isSet()方法返回真
clear():清除内部信号标志,当使用clear()方法后,isSet()方法就会返回假
wait():当内部信号为真的时才会执行,如果内部信号为假则会一直等待
import threading # 导入threading模块class mythread(threading.Thread): def __init__(self,threadname): threading.Thread.__init__(self,name = threadname) def run(self): global event # 使用全局Event对象 if event.isSet(): # 判断Event对象内部信号标志 event.clear() # 若已设置标志则清除 event.wait() # 调用wait方法 print self.getName() else: print self.getName() event.set() # 设置Event对象内部信号标志event = threading.Event() # 生成Event对象event.set() # 设置Event对象内部信号标志tl = []for i in range(10): t = mythread(str(i)) tl.append(t) # 生成线程列表 for i in tl: i.start() # 运行线程######运行结果######>>> 1032547698