我正在尝试加快从 h5py 数据集文件中读取块(将它们加载到 RAM 内存中)的过程。现在我尝试通过多处理库来做到这一点。
pool = mp.Pool(NUM_PROCESSES)
gen = pool.imap(loader, indices)
加载器函数是这样的:
def loader(indices):
with h5py.File("location", 'r') as dataset:
x = dataset["name"][indices]
这实际上有时是有效的(意味着预期加载时间除以进程数,从而实现并行化)。然而,大多数时候情况并非如此,加载时间只是保持与顺序加载数据时一样长。我能做些什么来解决这个问题吗?我知道 h5py 通过 mpi4py 支持并行读/写,但我只想知道这对于只读是否也是绝对必要的。
h5py 可以并行读取,不需要 MPI 版本。但为什么你期望这里的速度会加快呢?您的工作几乎完全受 I/O 限制,而不是 CPU 限制。并行进程不会有帮助,因为瓶颈是硬盘,而不是 CPU。如果这种情况下的并行化甚至减慢了整个读取操作,我也不会感到惊讶。
其他意见?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)