同步对象(Event)
# 同步对象(Event) import threading, time class Boss(threading.Thread): def run(self): print('Boss:今晚大家都要加班到22:00') print(event.isSet()) # False 没有设定标志位 event.set() # 设置了标志位,其它event.wait就可以跳过了 time.sleep(5) print('Boss:<22:00>可以下班了') print(event.isSet()) # False 这里被工人的线程清空了标志位 event.set() # 又设置了标志位,意味告诉工人可以下班了 class Worker(threading.Thread): def run(self): event.wait() # 等着,当老板event.set了,才可往下执行 print('Worker:命好苦') time.sleep(1) event.clear() # 清除标志位 event.wait() # 再等老板event.set print('Worker:Ohyeah') if __name__ == '__main__': event = threading.Event() # 创建一个同步对象event,所有线程对象共享一个event threads = [] # 创建一个线程空列表 for i in range(5): # 产生5个Worker类的线程并加入到threads列表中 threads.append(Worker()) threads.append(Boss()) # 产生一个Boss类的线程加入到threads列表中 for t in threads: # 运行threads列表中的线程,谁先运行是由cpu确定的,因此在Boss类中使用了event.set(),Worker类中只有event.wait() t.start() for t in threads: # hreads列表中的线程.join() t.join() print('end...')