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

7

我有一个需要 Python 2.6 的脚本。在下一个版本中,我将添加一个相对较大的 pickled 数据库,并且希望使用最快的 pickling 版本。如何确定在每个 Python 2.6 及更高版本中可用的 pickling 版本?

1个回答

9

就像这样:

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

编辑

我认为可以依赖最新的文档。例如,Python 3.2.1 的 pickle 文档指出:

目前有四种不同的协议可用于序列化。

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

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

  • 协议版本 2 是在 Python 2.3 中引入的。它提供了新式类的更高效的序列化。

  • 协议版本 3 在 Python 3.0 中添加。它明确支持字节,并且不能被 Python 2.x 的 pickle 模块反序列化。这是当前推荐的协议,在可能的情况下请使用它。

我认为这很容易确认!

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


这告诉我当前运行时pickle的版本。我想知道在运行任何2.6或更高版本的人可用的pickle版本。 - Paul Hoffman
1
现在有5种协议,其中版本4添加在Python 3.4中。请参见https://docs.python.org/3/library/pickle.html#data-stream-format。 - wjandrea

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接