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次迭代)。不幸的是,數據來自迭代中的幾個不同的對象,所以我不能將它們分組並在接受時打開一次文件。
我不知道h5py,但數據通常在關閉時刷新(如提交),所以關閉會更安全。然而,你可能有一個'flush'操作可用,所以這會有相同的效果。關閉的問題是你丟失了文件的位置,但是你應該準備好因停電等原因而重新啓動。 – cdarke
@cdarke關於hdf5的好處是沒有丟失文件位置的問題。數據集有點像字典中的numpy數組。有一個沖洗操作。目前我在每個數據集更改後刷新。 –
對於需要這麼長時間的跑步,你可能需要考慮如果你的力量超過了(作爲MC老將,這是我最大的恐懼)會發生什麼。似乎關閉和重新打開該文件可能更安全,並且不太可能在電源過載,計算機崩潰等情況下使文件易受損壞。 – gariepy