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)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,448评论 0 10
  • 没头绪的人生阅读 123评论 0 0
  • 早上去参加上海童书展,可是误了去上海火车。心情非常沮丧。给老公打电话求改签,打断了他跟人谈事情。他懊恼地数落我:真...
    诺拉的以后阅读 220评论 0 0
  • 最近在自己的linode服务器上安装了lnmp环境,同时博客也做了一次迁移,不过,因为mysql的配置出现问题,造...
    煎蛋大叔阅读 1,309评论 0 1