import time
import random
from multiprocessing import Process,Event
def car(e,i):
if not e.is_set():
print('%s 在等待'%(i))
e.wait() # 阻塞 等待 True 的事件信号
print('\033[0;32;40m%s 以通行\033[0m'%(i))
def light(e):
while True:
if e.is_set():
e.clear()
print('\033[31m红灯亮\033[0m')
else:
e.set()
print('\033[32m绿灯亮\033[0m')
time.sleep(2)
if __name__ == '__main__':
e = Event()
p = Process(target=light,args=(e,))
p.start()
for i in range(50):
cars = Process(target=car,args=(e,i))
cars.start()
time.sleep(random.random())