事件Event

from multiprocessing import Event
e = Event() # 事件创建之初,是阻塞状态
print(e.is_set()) # 查看事件的状态
# e.wait() # 根据事件的状态,选择阻塞 不 阻塞
print('1111')
e.set() # 修改事件的状态
print(e.is_set())
print('2222')
e.clear() # 清除修改的状态,改为FALSE


利用Event事件模拟的红绿灯事件
import time,random
from multiprocessing import Event,Process

def cars(e,i):
if not e.is_set():
print('car %i 在等待'%i)
e.wait()

print('33[0;32;40mcar %i 通过了33[0m'%i)


def light(e):
while True:
if e.is_set():
e.clear()
print('33[31m红灯亮了33[0m')
else:

e.set()
print('33[32m绿灯亮了33[0m')
time.sleep(2)

if __name__ == '__main__':
e = Event()
e.is_set()
p = Process(target=light,args=(e,))
p.start()
for i in range(20):
car = Process(target=cars, args=(e,i))
car.start()
time.sleep(random.random())
结果:

绿灯亮了
car 0 通过了
car 1 通过了
car 2 通过了
红灯亮了
car 3 在等待
car 4 在等待
car 5 在等待
car 6 在等待
car 7 在等待

原文地址:https://www.cnblogs.com/bozhengheng/p/10296734.html