__author__ = 'LL_YING' ''' Python提供了Event对象用于线程之间的通信。事实上,线程同步一定程度上实现了线程间通信。线程同步 是每次仅有一个线程对共享数据进行操作,其他线程等待。Event对象是由线程设置的信号标志,如果信号 标志为真则其他线程等待,直到信号解除。 ''' import threading ''' 1、设置信号:Event对象的set()方法设置Event对象内部的信号为真。Event对象提供了isSet()方法判断内部信号 。当使用set()之后isSet()为真 2、清除信号:Event对象的clear()方法可以清除对象内部的信号标志,即设置其为假(False)。使用后,isSet() 返回为假。 3、等待:Event对象的wait()方法只有在内部信号为真时才很快执行并返回。当Event对象内部信号标志位假时, wait()方法将一直等待,直到为真才返回。此外,wait()方法接受时间参数,设定最长等待时间。 ''' class mythread(threading.Thread): def __init__(self, threadname): threading.Thread.__init__(self, name=threadname) def run(self): global event if event.isSet(): event.clear() event.wait() print(self.getName()) else: print(self.getName()) event.set() event = threading.Event() event.set() t1 = [] for i in range(10): t = mythread(str(i)) t1.append(t) for i in t1: i.start() # 输出为: # 1 # 0 # 3 # 2 # 5 # 4 # 7 # 6 # 9 # 8
线程之间的通信
最新推荐文章于 2024-10-01 05:04:32 发布