我需要在多个进程之间共享HDF5文件中的大型数据集,出于一系列原因,mmap不是一个选项.
因此,我将其读入一个NumPy数组,然后将该数组复制到共享内存中,如下所示:
import h5py
from multiprocessing import shared_memory
dataset = h5py.File(args.input)['data']
shm = shared_memory.SharedMemory(
name=memory_label,
create=True,
size=dataset.nbytes
)
shared_tracemap = np.ndarray(dataset.shape, buffer=shm.buf)
shared_tracemap[:] = dataset[:]
但是这种方法会使所需的内存量加倍,因为我需要使用临时变量.有没有办法将数据集直接读入SharedMemory?