python 进程事件
1、作用
通过信号量,控制全部进程进入阻塞状态,也可以通过控制信号量,解除全部进程的阻塞
注意:定义的事件对象,默认状态是阻塞
2、常用方法
""" 对象.set() 作用:设置一个事件的状态为True 对象.clear() 作用:设置一个事件的状态为False 对象.is_set() 作用:查看当前事件的状态 对象.wait() 根据事件的状态,判断是否阻塞 若状态为True,则不阻塞 若状态为False,则阻塞 注意:阻塞的是 对象.wait()后面的内容 """
""" 红绿灯亮为永真 """ import time from multiprocessing import Process from multiprocessing import Event def car(e, car): if not e.is_set(): print('%s阻塞' % car) e.wait() print('%s通过' % car) def traffic_light(e): while 1: if e.is_set(): e.clear() print('红灯亮') else: e.set() print('绿灯亮') time.sleep(2) if __name__ == '__main__': e = Event() p = Process(target=traffic_light, args=(e, )) p.start() for i in range(30): p1 = Process(target=car, args=(e, 'car%s' % i )) p1.start() time.sleep(1)