40_并发编程-事件
一、基本定义
事件默认值为False
event = Event() #设置一个事件实例
event.set() #设置标志位,将e事件的状态改为True
event.clear() #清空标志位,将e事件的状态改为False
event.wait() #等待设置标志位
二、信号灯实例
1 import time
2 import random
3 from multiprocessing import Process,Event
4
5 #模拟红绿灯执行状态的函数
6 def traffic_lights(e):
7 while 1:
8 print('红灯啦')
9 time.sleep(5)
10 e.set()
11 print('绿灯亮')
12 time.sleep(3)
13 e.clear() #将e改为了False
14 def car(i,e):
15
16 if not e.is_set(): #新来的车看到是红灯
17 print('我们在等待.....')
18 e.wait()
19 print('走你')
20 else:
21 print('可以走了!!!')
22
23 if __name__ == '__main__':
24 e = Event()
25 hld = Process(target=traffic_lights,args=(e,))
26 hld.start()
27 while 1:
28 time.sleep(0.5)
29 #创建10个车
30 for i in range(3):
31 # time.sleep(random.randrange(1,3))
32 p1 = Process(target=car,args=(i,e,))
33 p1.start()