python同步锁
时间: 2023-06-28 08:11:43 浏览: 60
Python的线程模块提供了一个Lock对象,它可以用来控制多个线程对共享资源的访问。Lock对象有两种状态——锁定和未锁定,以及两个基本方法:
1. acquire([blocking]):用于获取锁。默认情况下,blocking为True,表示如果锁已经被其他线程获取,则当前线程会被阻塞,直到获取到锁为止。如果blocking为False,表示当前线程尝试获取锁,如果锁已经被其他线程获取,则直接返回False。
2. release():用于释放锁。
下面是一个使用Lock的例子:
```python
import threading
class SharedCounter:
def __init__(self, initial_value=0):
self._value = initial_value
self._lock = threading.Lock()
def increment(self, delta=1):
self._lock.acquire()
self._value += delta
self._lock.release()
def decrement(self, delta=1):
self.increment(-delta)
def value(self):
return self._value
```
在上面的代码中,我们定义了一个SharedCounter类,它包含一个计数器和一个Lock对象。increment()和decrement()方法使用Lock对象来保护计数器的修改,以确保在任何时候都只有一个线程可以修改计数器的值。