2016-05-13 67 views
1

我正在實施馬爾可夫鏈蒙特卡羅反演程序的數據收集。但是,MCMC運行可能需要一週或更長時間才能完成!它會更好,以打開該文件在運行的開頭:我應該重複打開/關閉一個文件還是將其保持打開一段時間(〜1周)?

with h5py.File('my_data.hdf5', 'r+', libver='latest') as fp: 
    fp.swmr_mode = True 
    mcmc_run(fp) 

或者我想補充一個數據集(內部mcmc_run()

with h5py.File('my_data.hdf5', 'r+', libver='latest') as fp: 
    fp.swmr_mode = True 
    fp['dataset'] = new_data 

我必須在節省約7萬桶每次9個數據集用於每個驗收(總計約500個計算時間約一週,約5000次迭代)。不幸的是,數據來自迭代中的幾個不同的對象,所以我不能將它們分組並在接受時打開一次文件。

+2

我不知道h5py,但數據通常在關閉時刷新(如提交),所以關閉會更安全。然而,你可能有一個'flush'操作可用,所以這會有相同的效果。關閉的問題是你丟失了文件的位置,但是你應該準備好因停電等原因而重新啓動。 – cdarke

+1

@cdarke關於hdf5的好處是沒有丟失文件位置的問題。數據集有點像字典中的numpy數組。有一個沖洗操作。目前我在每個數據集更改後刷新。 –

+2

對於需要這麼長時間的跑步,你可能需要考慮如果你的力量超過了(作爲MC老將,這是我最大的恐懼)會發生什麼。似乎關閉和重新打開該文件可能更安全,並且不太可能在電源過載,計算機崩潰等情況下使文件易受損壞。 – gariepy

回答

3

[張貼作爲一個答案評論]

對於持續多長時間,你可能要考慮,如果你有一個停電發生了什麼(作爲MC的老將,這是我最大的恐懼)運行。我建議關閉並重新打開該文件,因爲它可能更安全,並且在電源中斷,計算機崩潰等時很容易讓文件在運行多天時受到損壞。

相關問題