- 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('\033[0;32;40mcar %i 通过了 \ 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()
- 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 在等待
来源: http://www.bubuko.com/infodetail-2928398.html