【发布时间】:2022-07-06 23:11:20
【问题描述】:
我正在 Python 中运行并行化代码,并且尝试在每次迭代中保存一些值。我的代码可以简化/总结如下:
# Import necessary libraries
def func(a,b):
# Generate some data and save it into "vector".
# Create a Hdf5 file and save data in vector.
with h5py.File('/some_file.hdf5', 'w') as f:
f.create_dataset('data_set', data=vector)
# Some code
# Parallelize func
if __name__ == '__main__':
with mp.Pool(2) as p:
[p.apply_async(func, args=(elem, b)) for elem in big_array]
我在并行化的同时保存文件以节省内存,因为我将处理大量数据。
但是,我每次运行脚本时,都没有生成hdf5文件,也没有保存数据。
我对使用 Python 进行并行化还很陌生,但我不明白问题出在哪里。
【问题讨论】:
-
要与 h5py 并行编写 HDF5 文件,HDF5 和 h5py 都必须在启用并行 HDF5 的情况下编译(启用 MPI 支持)。这是通过 mpi4py Python 包完成的。完整的详细信息在the h5py docs。
-
感谢 kcw78!我快速浏览了
mpi5py,它似乎不太容易实现。你能给我一个例子来说明如何做到这一点吗?我目前正在使用multiprocessing,是否可以使用它,这样我就不必在我的代码中修改并行化的核心? -
对不起,我只阅读了文档,并没有使用
mpi4py。 The HDF Group Forum 上有一个 h5py 特定论坛。这可能是您实施细节的最佳来源。
标签: python parallel-processing python-multiprocessing hdf5 h5py