我知道Python pickling是一种以对象编程方式"存储"Python对象的方式 - 与用txt文件或DB编写的输出不同.
关于以下几点,您有更多细节或参考资料:
换句话说,我正在寻找一个关于酸洗的文档 - Python.doc解释了如何实现pickle但似乎没有深入了解有关序列化的使用和必要性的细节.
目前我正在使用Python进行图像检索.在该示例中从图像提取的关键点和描述符表示为numpy.array
s.形状(2000,5)中的第一个和形状(2000,128)的后者.两者都只包含值dtype=numpy.float32
.
所以,我想知道使用哪种格式来保存我提取的关键点和描述符.即我总是保存2个文件:一个用于关键点,一个用于描述符 - 这在我的测量中算作一步.我比较了pickle
,cPickle
(都与协议0和2),并与NumPy的二进制格式.pny
,结果真的困惑我:
我一直认为cPickle
应该比pickle
模块更快.但特别是协议0的加载时间在结果中非常突出.有没有人对此有解释?是因为我只使用数字数据吗?看起来很奇怪......
PS:在我的代码中,我基本上number=1000
在每种技术上循环1000次()并最终平均测量的时间:
timer = time.time
print 'npy save...'
t0 = timer()
for i in range(number):
numpy.save(npy_kp_path, kp)
numpy.save(npy_descr_path, descr)
t1 = timer()
results['npy']['save'] = t1 - t0
print 'npy load...'
t0 = timer()
for i in range(number):
kp = numpy.load(npy_kp_path)
descr = numpy.load(npy_descr_path)
t1 = timer()
results['npy']['load'] = t1 - t0
print 'pickle protocol 0 save...'
t0 = timer()
for …
Run Code Online (Sandbox Code Playgroud) 我最近遇到了Python pickle和cPickle模块的安全问题.显然,除非你将find_class方法作为基本修改覆盖以获得更高的安全性,否则在pickle中没有实现真正的安全措施.但我经常听说JSON更安全.
任何人都可以对此进行详细阐述吗?为什么JSON比pickle更安全?
非常感谢!标记
我想要获得模型保存的清晰图像。神经网络中有超参数和模型。
训练模型后,我想保存所有内容以使用它们,而无需重新训练模型。
当我将模型保存为 h5py 文件(.H5)时,它是否也会保存超参数?
如果是,pickle 文件的用途是什么?
我有一个 Python 脚本,它返回一个 dict,我想将其存储在某个地方以在更大的项目中使用(该脚本运行速度很慢,所以我不想在每次需要字典时只导入脚本)。
字典很小,所以我看到两个选项。我可以:
将 dict 作为文字写入新的 .py 文件,如下所示:
my_dict = slow_func()
with open('stored_dict.py', 'w') as py_file:
file_contents = 'stored_dict = ' + str(my_dict)
py_file.write(my_dict)
Run Code Online (Sandbox Code Playgroud)
然后我可以使用访问字典文字 from stored_dict import stored_dict
我应该更喜欢这些选项之一吗?