事件
#模块:Event #导入方法:from multiprocessing import Process,Event #模块方法: e=Event() e.is_set() #当is_set()的值为True时,e.wait()是非阻塞状态 #当is_set()的值为False时,e.wait()是阻塞状态 e.wait() #根据is_set的bool值决定阻塞或非阻塞状态 e.set() #将is_set()设为True e.clear() #将is_set()设为False #使用方法:交通信号灯原理 ##########交通信号灯模拟 from multiprocessing import Process,Event import time def Trafficlight(e): while 1: if e.is_set(): #当此条件为True时,表示绿灯,车辆可以通过 time.sleep(5) #表示绿灯的时间为5秒 print("\033[31m红灯亮了\033[0m") #5秒后红灯亮 e.clear() #clear将is_set设为False else: time.sleep(5) #红灯的时间为5秒 print("\033[32m 绿灯亮了\033[0m") #5秒后绿灯亮 e.set() #set将is_set设为True def Car(i,e): e.wait() #当wait为False时,此时会阻塞,当wait为True时,此时程序正常运行,所以受到信号灯is_set()影响 print("第{}辆车通过了".format(i)) if __name__ == '__main__': e=Event() #信号灯进程 light=Process(target=Trafficlight,args=(e,)) light.start() #50辆车 for i in range(50): car=Process(target=Car,args=(i,e)) car.start()