multiprocessing 进程间共享状态及示例
时间: 2023-08-26 10:03:53 浏览: 159
Python multiprocessing.Manager介绍和实例(进程间共享数据)
下面是一个使用共享内存实现进程间共享状态的示例代码:
```python
from multiprocessing import Process, Value, Array
def add_one(num):
for i in range(len(num)):
num[i] += 1
if __name__ == '__main__':
# 创建共享变量
num = Value('i', 0)
arr = Array('i', range(10))
# 创建两个进程
p1 = Process(target=add_one, args=(num,))
p2 = Process(target=add_one, args=(arr,))
# 启动进程
p1.start()
p2.start()
# 等待进程结束
p1.join()
p2.join()
# 输出结果
print(num.value)
print(arr[:])
```
在上面的示例中,我们使用Value和Array来创建共享变量num和arr。然后创建两个进程,分别传入这两个共享变量作为参数。在进程函数add_one中,我们对共享变量进行加一操作。最后输出结果可以看到,num的值被加了两次一,而arr中的每个元素都被加了一次。
需要注意的是,在对共享变量进行修改时,需要使用锁来保证数据的正确性。可以使用Value和Array的get_lock()方法获取对应的锁,然后使用acquire()和release()方法来加锁和解锁。
阅读全文