python3中的Pickle vs cPickle(?)[重复]

Posted

技术标签:

【中文标题】python3中的Pickle vs cPickle(?)[重复]【英文标题】:Pickle vs cPickle (?) in python3 [duplicate] 【发布时间】:2021-03-04 12:05:35 【问题描述】:

python2.7中曾经有cPickle。但是,我在python3 pickle 中再也看不到它了。该模块发生了什么,它是否被合并到常规的pickle 模块中?

【问题讨论】:

是的,他们现在是一回事了 @AnthonySottile 我明白了,感谢您的反馈。他们提到的文档或提案中是否有任何地方? PEP 3108 【参考方案1】:

在 Python 2.7 中,有一个纯 Python 版本和一个用 C 实现的性能优化 cPickle。现在,只有后一个实现保留了,但名称更简单。

这种名称统一方法始于 Python 3。请参阅 Guido var Rossum 的 "What's new in Python 3" 的摘录:

Python 2.x 中的一个常见模式是拥有一个模块版本 用纯 Python 实现,带有可选的加速版本 实现为 C 扩展;例如,pickle 和 cPickle。这 加重了导入加速版的负担 回到这些模块的每个用户的纯 Python 版本。在 Python 3.0,加速版本被认为是实现 纯 Python 版本的详细信息。用户应始终导入 标准版本,它尝试导入加速版本和 回退到纯 Python 版本。 pickle / cPickle 对 接受了这种治疗。

【讨论】:

以上是关于python3中的Pickle vs cPickle(?)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

python3 中的 _pickle 不适用于大数据保存

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

Python学习cPickle的用法

使用 Pickle / cPickle 达到最大递归深度

cPickle and pickle

pickle(cPickle)与numpy tofile/fromfile