【发布时间】:2015-03-25 09:29:01
【问题描述】:
我正在尝试加快从 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 进行并行读/写,但我只想知道这对于仅读取是否也是绝对必要的。
【问题讨论】:
-
我也使用 pool 和 pyspark 来启用 HDF5 的并行 I/O,我不明白为什么它需要多次调用 h5py.File。为什么不只在 loader 函数之外调用一次 h5py.File 然后并行化数据读取过程?
标签: python parallel-processing h5py