Event对象用于线程间的相互通信,实际上Condition对象在一定程度上已经实现线程间的通信,但Condition对象是每次仅有一个线程对共享数据进行操作,其他线程则等待。
而Event对象是由线程设置的信号标志,如果信号标志为真,则其他线程等待直到信号解除。
#!/usr/bin/
python
#
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() # 运行线程
######运行结果######
>>> 1
0
3
2
5
4
7
6
9
8