【发布时间】:2014-06-27 16:52:50
【问题描述】:
我正在运行一个需要多次迭代的数值实验。每次迭代后,我想将数据存储在 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 库?
- 我正在使用数据字典,因为如果我在进行更多实验时需要更改内容,它更容易编码并且更灵活。使用预先分配的数组会有很大的优势吗?
- 打开和关闭文件会影响运行时间吗?我这样做是为了检查除了我设置的文本日志之外的进度。
感谢您的帮助!
【问题讨论】:
-
对于您的“打开”开销,对于几个字节文件,使用“ab”选项打开大约需要 39 微秒,1kB 需要 41 微秒(us),~10kB 需要 44 微秒,158 us对于 100kB 和 2MB,对于 20MB 文件需要 162 us。因此,如果您的文件大小低于 20MB,则不会很多...这是使用 SSD 的 YMMV。
标签: python pickle numerical-methods