1. Event事件 ---标志,可以实现异步阻塞
之前input,recv,accpet sleep等都是同步阻塞(写在哪个进程就会阻塞哪个),然后学了Lock锁 和信号量Semophore 都可以实现异步阻塞,同时阻塞多个进程(比如锁 只是同一时间只允许一个进程执行任务,所以比如开10个进程,就会同时异步阻塞九个)然后Semophore信号量可以允许多把钥匙,同一时间多个进程拿到钥匙执行任务,就会异步阻塞其他的进程(只能等着)
现在Event 事件可以完成同时阻塞所有进程(相当于是一个标志,可以理解为交通信号灯,然后开的进程理解为车。交通信号灯,event为红(阻塞)进程,车就不能通过表现为阻塞,event 或交通灯为绿,车进程就可以通过,表现为非阻塞)
from multiprocessing import Event e=Event() # 实例化一个事件,默认阻塞(可以理解为交通信号灯,一开始红灯) e.set() # 设置为非阻塞(交通灯变绿) e.wait() # 默认为阻塞(红灯),set()之后变为非阻塞,(变绿) e.clear() # 设置为阻塞(红灯),刚才的绿灯现在变为i红灯 # e.wait() # clear之后现在wait()就会一直阻塞
运行结果: