python中给进程加锁
时间: 2024-01-08 21:33:58 浏览: 89
python学习笔记(十六)进程使用
在 Python 中,可以使用 `multiprocessing` 模块来创建并发的进程。如果需要在多个进程之间进行数据共享或者对共享资源进行互斥访问,可以使用 `Lock` 对象来实现进程间的加锁。
下面是一个简单的示例代码,展示了如何在两个进程之间使用 `Lock` 对象进行加锁:
```python
import multiprocessing
def worker(lock, shared_data):
# 加锁
lock.acquire()
try:
# 对共享资源进行操作
shared_data.value += 1
print(f"Worker: {shared_data.value}")
finally:
# 释放锁
lock.release()
if __name__ == '__main__':
# 创建共享数据
shared_data = multiprocessing.Value('i', 0)
# 创建锁对象
lock = multiprocessing.Lock()
# 创建两个进程
p1 = multiprocessing.Process(target=worker, args=(lock, shared_data))
p2 = multiprocessing.Process(target=worker, args=(lock, shared_data))
# 启动进程
p1.start()
p2.start()
# 等待进程结束
p1.join()
p2.join()
```
在上述代码中,我们首先创建了一个共享数据 `shared_data`,它是一个整数类型的变量。然后,我们创建了一个 `Lock` 对象 `lock`,用于实现对共享数据的互斥访问。
在 `worker` 函数中,我们首先调用 `lock.acquire()` 方法来获取锁,然后对共享数据进行操作。最后,使用 `lock.release()` 方法释放锁。
注意,在使用 `Lock` 对象时,一定要保证在获取锁后,对共享资源的操作完成后再释放锁,以避免出现死锁的情况。
运行上述代码,你会发现两个进程分别对共享数据进行操作,并且通过互斥访问实现了正确的结果。
阅读全文