juechafun/05-原子化笔记本/Python-线程锁.md

48 lines
910 B
Markdown

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