线程-事件

线程-事件


 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)