# -*- coding:utf-8 -*- # 通过标志位来实现两个线程之间的交互 import threading,time # event = threading.Event() event.wait() event.set() event.clear() event = threading.Event() def lighter(): count = 0 event.set() # 先定义标志位、变绿灯 while True: if count >= 5 and count < 10: event.clear() #清除标志位 print('\033[0;31m红灯亮了\033[0m') elif count >10 : event.set() #变绿灯 count = 0 else: print("\033[32;1m grenn绿等亮了\033[0m") time.sleep(1) count +=1 def car(name): while True: if event.is_set(): #判断是否设置了标志位(代表绿灯) print("[%s] 现在是绿灯runint...."%name) time.sleep(1) else: print("[%s] 现在是红灯,waiting...."%name) event.wait() print("\033[32;1m[%s] 绿灯亮了 开始走咯 going....\033[0m"%name) L1 = threading.Thread(target=lighter,) L1.start() car1 = threading.Thread(target=car,args=("H6",)) car1.start() car2 = threading.Thread(target=car,args=("H2",)) car2.start()