线程-事件
1# author: wangy
2# date: 2024/8/13 16:23
3# description: 事件
4
5"""
6事件是2个线程交互的最简单机制
7
8一个线程发出信号
9
10而另一个线程等待信号
11
12"""
13from threading import Thread, Event, current_thread
14
15waxed = Event()
16buffered = Event()
17
18'''
19还是以 13_threading_condition.py 中的抛光-打蜡为例
20
21可以看到, 使用Event 会简洁一些
22'''
23
24
25def wax_on():
26 while True:
27 waxed.wait()
28 print(f"{current_thread().name} wax")
29 time.sleep(1)
30 waxed.clear()
31 buffered.set()
32
33
34def buffer_on():
35 while True:
36 buffered.wait()
37 print(f"{current_thread().name}: buffer")
38 time.sleep(1)
39 buffered.clear()
40 waxed.set()
41
42
43if __name__ == '__main__':
44 ws = Thread(target=wax_on, daemon=True)
45 bs = Thread(target=buffer_on, daemon=True)
46 buffered.set()
47 ws.start()
48 bs.start()
49
50 time.sleep(10)
51 sys.exit(-1)