【问题标题】:Should I open/close a file repeatedly or keep it open for an extended period of time (~1 week)?我应该重复打开/关闭文件还是长时间(约 1 周)保持打开状态?
【发布时间】:2016-09-09 23:19:17
【问题描述】:

我正在为马尔可夫链蒙特卡洛反演程序实现数据收集。但是,MCMC 运行可能需要一周或更长时间才能完成!在运行开始时打开文件会更好:

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

每次接受我必须在 9 个数据集上保存大约 7 MB(在大约一周的计算时间内总共有 500 个,约 5000 次迭代)。不幸的是,数据来自迭代中的几个不同对象,因此我无法将它们分组并在每次接受时打开文件一次。

【问题讨论】:

  • 我不知道h5py,但数据通常在关闭时被刷新(如提交),所以关闭会更安全。但是,您可能有一个可用的flush 操作,这样会产生相同的效果。关闭的问题是你丢失了文件位置,但你应该为停电等导致的重启做好准备。
  • @cdarke hdf5 的好处是没有丢失文件位置的问题。访问数据集有点像字典中的 numpy 数组。有一个冲洗操作。目前我在每次数据集更改后刷新。
  • 对于需要这么长时间的跑步,您可能需要考虑如果停电会发生什么(作为一名 MC 老兵,这是我最大的恐惧)。似乎关闭和重新打开文件可能更安全,并且在断电、计算机崩溃等期间不太可能使文件容易损坏。
  • @gariepy 说得好。我会做安全的事情并打开/关闭文件。

标签: python hdf5 scientific-computing h5py


【解决方案1】:

[发表评论作为答案]

对于需要这么长时间的跑步,您可能需要考虑如果停电会发生什么(作为一名 MC 资深人士,这是我最大的恐惧)。我建议关闭并重新打开该文件,因为它可能更安全,并且在运行多天时,在停电、计算机崩溃等期间不太可能使文件容易损坏。

【讨论】:

    猜你喜欢
    • 2011-06-19
    • 2011-05-25
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    相关资源
    最近更新 更多