我如何知道特定版本的 Python 支持哪些版本的 pickle?

发布于 2024-11-24 01:28:38 字数 134 浏览 3 评论 0原文

我有一个需要 Python 2.6 的脚本。我将在下一个版本中添加一个大型的 pickle 数据库,并且我想使用最快的 pickling 版本。如何判断 Python 2.6 及更高版本的每个版本中都提供了哪些版本的 pickling?

I have a script that requires Python 2.6. I will be adding a large-ish pickled database to the next version, and I want to use the fastest version of pickling. How can I tell which versions of pickling are available in every version of Python 2.6 and later?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我不会写诗 2024-12-01 01:28:38

就像这样:

>>> import pickle
>>> pickle.compatible_formats
['1.0', '1.1', '1.2', '1.3', '2.0']

编辑

我认为依赖最新的文档是安全的。例如 Python 3.2.1 的 pickle 文档< /a> 状态:

目前有 4 种不同的协议可用于
酸洗。

  • 协议版本 0 是原始的人类可读协议,向后兼容早期版本的 Python。

  • 协议版本 1 是旧的二进制格式,也与早期版本的 Python 兼容。

  • 协议版本 2 是在 Python 2.3 中引入的。它提供了更有效的新型类的pickle。

  • Python 3.0 中添加了协议版本 3。它具有对字节的明确支持,并且无法通过 Python 2.x pickle 模块进行 unpickled。这个
    是当前推荐的协议,只要有可能就使用它。

我认为这很容易确认!

要明确回答您的问题,这意味着 Python 2.6-2.7 支持 Pickle 版本 <= 2.0,Python 3.0-3.2 支持 Pickle 版本 <= 3.0。

Like so:

>>> import pickle
>>> pickle.compatible_formats
['1.0', '1.1', '1.2', '1.3', '2.0']

Edit

I think it's safe to rely on the latest documentation. For example the pickle documentation for Python 3.2.1 states:

There are currently 4 different protocols which can be used for
pickling.

  • Protocol version 0 is the original human-readable protocol and is backwards compatible with earlier versions of Python.

  • Protocol version 1 is the old binary format which is also compatible with earlier versions of Python.

  • Protocol version 2 was introduced in Python 2.3. It provides much more efficient pickling of new-style classes.

  • Protocol version 3 was added in Python 3.0. It has explicit support for bytes and cannot be unpickled by Python 2.x pickle modules. This
    is the current recommended protocol, use it whenever it is possible.

I think that makes it easy to confirm!

To explicitly answer your question, this means Python 2.6-2.7 support Pickle versions <= 2.0, and Python 3.0-3.2 support Pickle versions <= 3.0.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文