multiprocessing.shared_memory --- 从进程直接访问的共享内存
multiprocessing.shared_memory
是Python中的一个模块,它允许我们创建可以在多个进程之间共享的内存区域。这样可以让进程之间高效地共享数据,而不需要进行消息传递或者数据复制。
以下是一个使用 multiprocessing.shared_memory
的例子:
import numpy as np
from multiprocessing import Process, shared_memory
# 创建共享内存
def create_shared_memory(size):
# 创建 NumPy 数组,并转换为共享内存
arr = np.arange(size, dtype=np.int)
shm = shared_memory.SharedMemory(create=True, size=arr.nbytes)
# 将 NumPy 数组复制到共享内存
np.copyto(shm.buf, arr)
return shm
# 读取共享内存
def read_shared_memory(shm):
# 将共享内存转换为 NumPy 数组
arr = np.frombuffer(shm.buf, dtype=np.int)
print(arr)
# 主进程
if __name__ == '__main__':
size = 10
# 创建共享内存并获取其key
shm_key = create_shared_memory(size).name
# 创建一个进程来读取共享内存
p = Process(target=read_shared_memory, args=(shm_key,))
p.start()
p.join()
# 清理共享内存
shared_memory.SharedMemory(name=shm_key).close()
shared_memory.SharedMemory(name=shm_key).unlink()
在这个例子中,我们首先创建了一个名为 create_shared_memory
的函数,该函数创建了一个 NumPy 数组并将其转换为共享内存。然后我们创建了一个名为 read_shared_memory
的函数,该函数读取共享内存并将其转换为 NumPy 数组并打印出来。在主进程中,我们首先创建共享内存,然后启动一个新进程来读取这个共享内存,并在完成后清理共享内存。
评论已关闭