如何在Python中使用`multiprocessing`模块实现共享内存?
时间: 2024-10-03 10:01:40 浏览: 34
在Python中,`multiprocessing`模块提供了一个名为`Value`或`Array`的类,它们可以用于在进程之间共享内存。下面是一个简单的例子说明如何创建并使用共享内存:
```python
from multiprocessing import Value, Array
# 创建一个整型共享内存
shared_int = Value('i', 0) # 'i'代表int类型,0为其初始值
def worker(shared):
shared.value += 1 # 修改共享值
print(f"Worker modified shared value to: {shared.value}")
if __name__ == "__main__":
p = Process(target=worker, args=(shared_int,))
p.start()
p.join() # 等待子进程结束
print("Main process reads the shared value:", shared_int.value)
```
在这个例子中,`shared_int`是一个`Value`实例,它可以像普通变量一样读写,但在不同进程中修改时会保持同步。同样,`Array`类可以用于创建共享数组:
```python
import numpy as np
from multiprocessing import Array
# 创建一个共享浮点数数组
shared_array = Array('d', [0.0] * 5) # 'd'代表double(浮点型)
def worker(arr):
arr[0] = arr[0] + 1.0
print(f"Worker modified array element at index 0 to: {arr[0]}")
if __name__ == "__main__":
p = Process(target=worker, args=(shared_array,))
p.start()
p.join()
print("Main process reads the array:", list(shared_array))
```
这里,`shared_array`是`Array`类型的,用于共享numpy数组。
阅读全文