私はマルコフ連鎖モンテカルロ反転プログラムのデータ収集を実装しています。ただし、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回の反復)。残念ながら、データは繰り返し処理の中のいくつかの異なるオブジェクトから来ているので、それらをグループ化して受諾ごとにファイルを開くことはできません。
私はh5pyを知らないのですが、データは通常クローズ時に(コミットのように)フラッシュされるため、クローズする方が安全です。しかし、あなたは 'flush'操作を利用できるので、同じ効果があります。閉鎖の問題は、ファイルの位置を失うことですが、停電などによる再起動の準備が必要です。 – cdarke
@cdarke hdf5の素晴らしい点は、ファイルの位置を失うことに問題がないことです。データセットには、辞書の中の数が少ない配列のようにアクセスされます。フラッシュ操作があります。現在、私は各データセットの変更後にフラッシュします。 –
これほど長い時間がかかる場合は、電源を切っても(MCのベテランとして、これが私の最大の恐怖です)何が起こるかを考えてみてください。ファイルを閉じると再オープンするほうがおそらく安全であり、電源が切れたときやコンピュータのクラッシュ時などに破損しやすいファイルである可能性は低いです。 – gariepy