Pickle 小结

何为序列化

pickle可以序列(serializing)和反序列化(deserializing)python中的对象 [Python中的pickle]
1. 序列化:ptyhon对象 (list, dict, etc.) → 字节流;反之,则为反序列化。
2. 字节流中包括重建对象所需的所有信息。

如何序列化

>>> import pickle
>>> a = [1, 2, 3]
>>> pickle.dump(a, open('test_file1', 'wb'))
>>> b= pickle.load(open('test_file1', 'rb'))
>>> print(a == b)
True

用来做什么

pickle有很多应用场景,一下列举一些常用的情形:[pickle常用例子]

  1. 持久化(persistence):将程序的状态数据保存至磁盘,使得程序重启时能从退出时的状态继续进行。

  2. 在多核或者分布式系统中,传输python数据 (在python下,marshalling和序列化同意) [多进程和pickle]:

    • pickle 的安全性不足,永远不要反序列化不可信来源的 pickle 字节流。
    • [并行计算示例]
  3. 在数据库中,保存python对象。

  4. 【不懂本条意思】将python对象转换为字节流,从而作为字典的 key:

    • 【不懂本条意思】两个相同的对象,可以被序列化得到不同的字节流,甚至同一个对象序列化两次也会得到不同的字节流,这是因为pickle包含了引用计数信息(reference count information)

你可能感兴趣的:(Pickle 小结)