簡體   English   中英

多處理:寫入 hdf5 文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM