Python2:我应该使用 Pickle 还是 cPickle?

Posted

技术标签:

【中文标题】Python2:我应该使用 Pickle 还是 cPickle?【英文标题】:Python2: Should I use Pickle or cPickle? 【发布时间】:2016-09-03 20:45:06 【问题描述】:

Python 2 具有用于序列化的 picklecPickle 模块。

cPicklepickle 有一个明显的优势:速度。 picklecPickle 有什么优势(如果有的话)?

【问题讨论】:

你可以看看这个页面。这将为您的困惑提供正确的方向docs.python.org/2/library/pickle.html 【参考方案1】:

我发现这个关于泡菜和 cPickle:

“pickle 模块实现了一种将任意 Python 对象转换为一系列字节的算法....

cPickle 模块用 C 而不是 Python 实现了相同的算法。它比 Python 实现快很多倍但不允许用户从 Pickle 子类化。

如果子类化对您的使用不重要,您可能想要使用 cPickle。"

来源:https://pymotw.com/2/pickle/

【讨论】:

【参考方案2】:

pickle 模块实现了一种将任意 Python 对象转换为一系列字节的算法。此过程也称为“序列化”对象。然后可以传输或存储表示对象的字节流,并在以后重构以创建具有相同特征的新对象。

cPickle 模块在 C 而非 Python 中实现了相同的算法。它比 Python 实现快很多倍,但不允许用户从 Pickle 子类化。如果子类化对您的使用不重要,您可能想要使用 cPickle。

Source 以上信息。

【讨论】:

对于那些在 Python3 中搜索 pickle / cPickle 使用的人,this SO answer 可能会有所帮助。 从上面的链接中,@Martijn Pieters:“在 Python 3 中已经集成了加速版本,除了 import pickle 之外没有理由使用任何东西。”

以上是关于Python2:我应该使用 Pickle 还是 cPickle?的主要内容,如果未能解决你的问题,请参考以下文章

KeyError 使用 read_pickle 将 json_pickle(d) 推文读入数据帧

Python pickle 协议选择?

Python中应该使用%还是format来格式化字符串?

Python之路--Python中应该使用%还是format来格式化字符串?

Python 2和3之间numpy数组的pickle不兼容

无法在 Python 3.6 中使用 _pickle 加载 Python 2.x .dat 文件 [重复]