2016-05-13 12 views
1

私はマルコフ連鎖モンテカルロ反転プログラムのデータ収集を実装しています。ただし、MCMCの実行には1週間以上かかる場合があります。実行の開始時にファイルを開く方が良いでしょう:ファイルを繰り返し開いたり閉じたりするべきですか?長時間(〜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の素晴らしい点は、ファイルの位置を失うことに問題がないことです。データセットには、辞書の中の数が少ない配列のようにアクセスされます。フラッシュ操作があります。現在、私は各データセットの変更後にフラッシュします。 –

+2

これほど長い時間がかかる場合は、電源を切っても(MCのベテランとして、これが私の最大の恐怖です)何が起こるかを考えてみてください。ファイルを閉じると再オープンするほうがおそらく安全であり、電源が切れたときやコンピュータのクラッシュ時などに破損しやすいファイルである可能性は低いです。 – gariepy

答えて

3

長い、あなたは(MCのベテランとして、これが私の最大の恐怖である)停電を持っている場合、何が起こるかを検討する必要がありますことを取るの実行のために

[答えとしてコメントを投稿]。私はファイルを閉じて再オープンすることをお勧めします。おそらく、より安全であり、何日も実行すると、停電やコンピュータのクラッシュなどの間にファイルが壊れやすい状態になる可能性は低いからです。

関連する問題