Threading.lock
时间: 2024-09-11 22:07:22 浏览: 62
对python多线程中互斥锁Threading.Lock的简单应用详解
`Threading.Lock` 是 Python 中 `threading` 模块中的一个组件,用于同步线程执行。在并发编程中,锁(Lock)是一种基本的同步机制,它确保同一时间只有一个线程能够访问共享资源。当一个线程获得了锁后,其他尝试获取该锁的线程会被阻塞,直到锁被释放。
以下是一些关于 `threading.Lock` 的关键点:
1. **获得锁**:使用 `lock.acquire()` 方法获取锁,如果锁已被其他线程持有,则当前线程会被阻塞等待。
2. **释放锁**:一旦完成对共享资源的操作,应使用 `lock.release()` 方法释放锁,这使得其他线程有机会获得并执行。
3. **重入锁**:`Lock` 类默认不支持重入(即一个已经持有锁的线程再次获得同一个锁)。如果你需要可重入的锁,可以使用 `threading.RLock`。
4. **异常处理**:在 Python 中,通常建议在 `with` 语句中使用锁,这样可以确保即使在操作过程中发生异常,锁也会自动释放。
```python
import threading
# 创建一个锁实例
lock = threading.Lock()
def thread_function():
with lock:
# 这里是临界区,只有当没有其他线程拥有锁时才能执行
print("Thread {} is executing".format(threading.current_thread().name))
# 创建两个线程
t1 = threading.Thread(target=thread_function, name="Thread 1")
t2 = threading.Thread(target=thread_function, name="Thread 2")
# 启动线程
t1.start()
t2.start()
t1.join() # 确保主线程等待 t1 完成后再进行下一行
t2.join()
```
阅读全文