相关疑难解决方法(0)

Python序列化 - 为什么要pickle?

我知道Python pickling是一种以对象编程方式"存储"Python对象的方式 - 与用txt文件或DB编写的输出不同.

关于以下几点,您有更多细节或参考资料:

  • 腌制对象"存储"在哪里?
  • 为什么酸洗保留对象表示比存储在DB中更多?
  • 我可以从一个Python shell会话中检索pickled对象吗?
  • 序列化有用时,您是否有重要的示例?
  • 用pickle进行序列化是否意味着数据"压缩"?

换句话说,我正在寻找一个关于酸洗的文档 - Python.doc解释了如何实现pickle但似乎没有深入了解有关序列化的使用和必要性的细节.

python serialization pickle

83
推荐指数
2
解决办法
5万
查看次数

用数字数据比cPickle更快?

目前我正在使用Python进行图像检索.在该示例中从图像提取的关键点和描述符表示为numpy.arrays.形状(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 numpy pickle

15
推荐指数
1
解决办法
4983
查看次数

JSON与Pickle安全性

我最近遇到了Python pickle和cPickle模块的安全问题.显然,除非你将find_class方法作为基本修改覆盖以获得更高的安全性,否则在pickle中没有实现真正的安全措施.但我经常听说JSON更安全.

任何人都可以对此进行详细阐述吗?为什么JSON比pickle更安全?

非常感谢!标记

python json pickle

12
推荐指数
2
解决办法
2963
查看次数

h5py文件和pickle文件保存模型的区别

我想要获得模型保存的清晰图像。神经网络中有超参数和模型。

训练模型后,我想保存所有内容以使用它们,而无需重新训练模型。

当我将模型保存为 h5py 文件(.H5)时,它是否也会保存超参数?

如果是,pickle 文件的用途是什么?

python pickle python-3.x h5py keras

5
推荐指数
1
解决办法
8325
查看次数

将dict保存到pickle还是写入文件?

我有一个 Python 脚本,它返回一个 dict,我想将其存储在某个地方以在更大的项目中使用(该脚本运行速度很慢,所以我不想在每次需要字典时只导入脚本)。

字典很小,所以我看到两个选项。我可以:

  1. 将dict保存到pickle文件
  2. 将 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

我应该更喜欢这些选项之一吗?

python pickle

4
推荐指数
2
解决办法
8160
查看次数

标签 统计

pickle ×5

python ×5

h5py ×1

json ×1

keras ×1

numpy ×1

python-3.x ×1

serialization ×1