98-python-进程-Event(红绿灯例子)

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())

  

posted @ 2018-11-20 11:52  _Q  阅读(133)  评论(0)    收藏  举报