threading event

#!usr/bin/env python
  2 #coding: utf-8
  3 #Author: Andy
  4 
  5 import threading
  6 import time
  7 
  8 def producer():
  9     print('等人来买包子。。。')
 10     event.wait()
 11     event.clear() # 收到信号,开始做包子,将set清空
 12     print('开始做包子。。。。')
 13 
 14     time.sleep(5) #耗时5秒
 15     event.set() # 包子做好了,给consumer信号
 16 
 17 def consumer():
 18     print('好饿啊,去买个包子吃下。。。。')
 19     event.set() # 告诉producer
 20     print('等包子做好')
 21     time.sleep(2)
 22     event.wait() # 等包子做好
 23     print('包子真好吃。。。') # 收到信号
 24 
 25 event = threading.Event()
 26 
 27 t1 = threading.Thread(target=producer)
 28 t1.start()
 29 
 30 t2 = threading.Thread(target=consumer)
 31 t3.start()
Code

threading.Event(),有set, clear,wait等方法,方便在两个进程间通信。

当event.set()时,得到信号,继续向下执行,不再wait(),但一旦设置了set()就会一直存在,所以在下一次set之前要先clear()。

原文地址:https://www.cnblogs.com/Andy963/p/5350215.html