python 多进程共享内存
时间: 2023-08-29 22:13:13 浏览: 102
在 Python 中,可以使用 `multiprocessing` 模块实现多进程共享内存。具体的实现方式可以使用 `Value` 和 `Array` 两种对象。
`Value` 对象可以用来在多个进程之间共享一个单一的值,支持整数、浮点数等基本数据类型。例如:
```python
from multiprocessing import Process, Value
def func(val):
val.value += 1
if __name__ == '__main__':
val = Value('i', 0)
processes = [Process(target=func, args=(val,)) for i in range(10)]
for p in processes:
p.start()
for p in processes:
p.join()
print(val.value) # 输出 10
```
`Array` 对象可以用来在多个进程之间共享一个数组,支持 int、float 等基本数据类型。例如:
```python
from multiprocessing import Process, Array
def func(arr):
for i in range(len(arr)):
arr[i] += 1
if __name__ == '__main__':
arr = Array('i', [0] * 10)
processes = [Process(target=func, args=(arr,)) for i in range(10)]
for p in processes:
p.start()
for p in processes:
p.join()
print(arr[:]) # 输出 [10, 10, 10, 10, 10, 10, 10, 10, 10, 10]
```
需要注意的是,多进程共享内存需要注意同步问题,可以使用锁来保证数据的一致性。
阅读全文