###红绿灯事件
from multiprocessing import Process
import time
from multiprocessing import Event
import random
def cars(i,e):
if not e.is_set(): #r.is_set()是True 那么not e.is_set()是False
print("car%s在等待"%i)
e.wait() #阻塞 知直到一个事件状态变成true
print('car%s通过'%i)
def func(e):
while True:
if e.is_set():
e.clear()#将值改成False
print("红灯亮了")
else:
e.set()#将值改成True
print("\033[32m绿灯亮了\033[0m")
time.sleep(2)
if __name__=="__main__":
e=Event()
c=Process(target=func,args=(e,))
c.start()
for i in range(20):
car=Process(target=cars,args=(i,e))
car.start()
#random.randint(1,5) 是几秒钟
time.sleep(random.random()) #是0-1秒钟之间
立即注册