python threading锁
时间: 2023-08-20 07:04:32 浏览: 92
在 Python 中,可以使用 threading 模块来实现线程锁。线程锁可以用来确保多个线程之间对共享资源的访问互斥,避免出现竞争条件。
以下是一个使用 threading 锁的示例代码:
```python
import threading
# 创建一个锁对象
lock = threading.Lock()
# 共享资源
counter = 0
def increment():
global counter
for _ in range(100000):
# 获取锁
lock.acquire()
try:
counter += 1
finally:
# 释放锁
lock.release()
# 创建多个线程并启动
threads = []
for _ in range(10):
t = threading.Thread(target=increment)
threads.append(t)
t.start()
# 等待所有线程执行完毕
for t in threads:
t.join()
print("Counter:", counter)
```
在上面的示例中,我们创建了一个锁对象 `lock`,然后定义了一个共享资源 `counter`。在 `increment` 函数中,我们使用 `lock.acquire()` 来获取锁,并在 `try-finally` 块中对 `counter` 进行加一操作。最后,使用 `lock.release()` 释放锁。
通过使用锁,我们确保每次只有一个线程可以执行临界区代码(即对共享资源的访问),从而避免了竞争条件的发生。
请注意,在使用锁时要小心避免死锁的情况。确保在获取锁后一定会释放锁,以避免其他线程无法获取到锁而导致死锁。
阅读全文