我正在尝试从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进行并行读/写,但我只是想知道这对于只读也是绝对必要的。
答案 0 :(得分:8)
h5py可以并行读取,不需要MPI版本。但是你为什么期望在这里加速呢?你的工作几乎完全是I / O绑定,而不是CPU限制。并行进程不会有帮助,因为瓶颈是你的硬盘,而不是CPU。如果在这种情况下并行化甚至减慢了整个阅读操作,我也不会感到惊讶。 其他意见?