[英]Multiprocessing: writing into a hdf5 file
我在 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 進行並行化還很陌生,但我不明白問題出在哪里。
最后,我通過以下方式更改了with
命令(最后兩行):
p = mp.Pool(2)
result = [p.apply_async(func, args=(elem, b)) for elem in big_array]
p.close()
p.join()
它奏效了!
似乎前面的代碼使用with
命令基本上在將任務分配給每個處理器時離開了for
循環,並在所有計算完成之前離開了循環。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.