#模块: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()