使用 Python 频繁更新数值实验的存储数据 [关闭]

2024-01-11

我正在运行一个需要多次迭代的数值实验。每次迭代之后,我想将数据存储在 pickle 文件或类似 pickle 的文件中,以防程序超时或数据结构被利用。最好的继续方式是什么。这是骨架代码:

data_dict = {}                       # maybe a dictionary is not the best choice
for j in parameters:                 # j = (alpha, beta, gamma) and cycle through
    for k in number_of_experiments:  # lots of experiments (10^4)
        file = open('storage.pkl', 'ab')
        data = experiment()          # experiment returns some numerical value
                                     # experiment takes ~ 1 seconds, but increase
                                     # as parameters scale
        data_dict.setdefault(j, []).append(data)
        pickle.dump(data_dict, file)
        file.close()

问题:

  1. 搁置在这里是更好的选择吗?或者其他一些我不知道的Python库?
  2. 我使用数据字典是因为如果我需要在做更多实验时进行更改,它更容易编码并且更灵活。使用预先分配的数组会带来巨大的优势吗?
  3. 打开和关闭文件会影响运行时间吗?我这样做是为了除了我设置的文本日志之外我还可以检查进度。

谢谢你的帮助!


  1. 假设您正在使用numpy对于您的数值实验,而不是pickle http://www.benfrederickson.com/2014/02/12/dont-pickle-your-data.html我建议使用numpy.savez http://docs.scipy.org/doc/numpy/reference/generated/numpy.savez.html.
  2. 保持简单,仅当您觉得脚本运行时间太长时才进行优化。
  3. 打开和关闭文件确实会影响运行时间,但无论如何进行备份会更好。

我会用collections.defaultdict(list)而不是普通的dict and setdefault.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Python 频繁更新数值实验的存储数据 [关闭] 的相关文章

随机推荐