Python2:我应该使用 Pickle 还是 cPickle?
Posted
技术标签:
【中文标题】Python2:我应该使用 Pickle 还是 cPickle?【英文标题】:Python2: Should I use Pickle or cPickle? 【发布时间】:2016-09-03 20:45:06 【问题描述】:Python 2 具有用于序列化的 pickle
和 cPickle
模块。
cPickle
比pickle
有一个明显的优势:速度。 pickle
比 cPickle
有什么优势(如果有的话)?
【问题讨论】:
你可以看看这个页面。这将为您的困惑提供正确的方向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) 推文读入数据帧