使用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