48 lines
910 B
Markdown
48 lines
910 B
Markdown
|
|
---
|
|
#领域/Python
|
|
|
|
#复盘/1
|
|
|
|
## 一句话描述
|
|
|
|
[____Python多线程____]
|
|
|
|
---
|
|
|
|
## 核心定义
|
|
|
|
锁保护的是共享变量的原子操作逻辑
|
|
`with 锁对象:` 自动完成「加锁→执行逻辑→解锁」
|
|
|
|
```python
|
|
import threading
|
|
线程锁 = threading.Lock() # 全局唯一锁,保护所有共享变量
|
|
|
|
退出标志 = False
|
|
|
|
def 线程定义():
|
|
|
|
while not 退出标志:
|
|
|
|
写变量_临时 = 耗时操作
|
|
|
|
# 所有读写共享变量的操作,均用这一把锁
|
|
with 线程锁:
|
|
# 对共享变量的核心操作:读/写/清空/赋值
|
|
写变量 = 写变量_临时 # 写变量原子操作
|
|
读变量_临时 = 读变量 # 读变量原子操作
|
|
|
|
耗时操作(读变量)
|
|
|
|
|
|
子线程 = threading.Thread(target=线程定义)
|
|
子线程.start()
|
|
|
|
主程序退出
|
|
退出标志 = True
|
|
|
|
子线程.join()
|
|
```
|
|
|