是否可以使用多处理在一个h5py文件上进行并行读取?

Bap*_*ist 6 python parallel-processing h5py

我试图加快从h5py数据集文件中读取块(将它们加载到RAM内存中)的过程.现在我尝试通过多处理库来做到这一点.

pool = mp.Pool(NUM_PROCESSES)
gen = pool.imap(loader, indices)
Run Code Online (Sandbox Code Playgroud)

加载器功能是这样的:

def loader(indices):
    with h5py.File("location", 'r') as dataset:
        x = dataset["name"][indices]
Run Code Online (Sandbox Code Playgroud)

这实际上有时有效(意味着预期的加载时间除以进程数并因此并行化).但是,大部分时间它没有,加载时间只是保持与按顺序加载数据时一样高.有什么办法可以解决这个问题吗?我知道h5py支持通过mpi4py进行并行读/写,但我只想知道这对于只读也是绝对必要的.

wea*_*rog 10

h5py可以并行读取,不需要MPI版本.但是你为什么期望在这里加速呢?你的工作几乎完全是I/O绑定,而不是CPU限制.并行进程不会有帮助,因为瓶颈是你的硬盘,而不是CPU.如果在这种情况下并行化甚至减慢了整个阅读操作,我也不会感到惊讶.其他意见?