编程语言
首页 > 编程语言> > 使用Python经常更新数值实验的存储数据

使用Python经常更新数值实验的存储数据

作者:互联网

我正在进行一项需要多次迭代的数值实验.在每次迭代之后,我想将数据存储在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()

问题:

>在这里搁置更好的选择吗?还是其他一些我不知道的python库?
>我正在使用数据字典,因为如果我需要在进行更多实验时更改内容,则编码更容易,更灵活.使用预先分配的数组会是一个巨大的优势吗?
>打开和关闭文件是否会影响运行时间?我这样做,以便除了我设置的文本日志之外,我还可以查看进度.

谢谢你的帮助!

解决方法:

>假设您使用numpy进行数值实验,而不是pickle,我建议使用numpy.savez.
>保持简单,只有在您认为脚本运行时间过长时才进行优化.
>打开和关闭文件确实会影响运行时间,但无论如何都要更好地进行备份.

我会使用collections.defaultdict(list)而不是plain dict和setdefault.

标签:numerical-methods,python,pickle
来源: https://codeday.me/bug/20191007/1865969.html