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()
信号灯实例

 

 

posted @ 2018-10-25 17:50  qi.hu  阅读(154)  评论(0编辑  收藏  举报