python学习笔记 day36 事件

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()就会一直阻塞

运行结果:

猜你喜欢

转载自www.cnblogs.com/xuanxuanlove/p/9777159.html