threading event

时间:2022-08-10 14:24:44
#!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()。