From: Raymond Hettinger Date: Wed, 31 Oct 2007 21:57:58 +0000 (+0000) Subject: Clarify the reasons why pickle is almost always better than marshal X-Git-Tag: v2.6a1~1109 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=84e26b6d5d563781e1b78ddd3b1b95d5a4137617;p=python Clarify the reasons why pickle is almost always better than marshal --- diff --git a/Doc/library/marshal.rst b/Doc/library/marshal.rst index 6927067ab6..8efcbb769d 100644 --- a/Doc/library/marshal.rst +++ b/Doc/library/marshal.rst @@ -25,7 +25,9 @@ transfer of Python objects through RPC calls, see the modules :mod:`pickle` and writing the "pseudo-compiled" code for Python modules of :file:`.pyc` files. Therefore, the Python maintainers reserve the right to modify the marshal format in backward incompatible ways should the need arise. If you're serializing and -de-serializing Python objects, use the :mod:`pickle` module instead. +de-serializing Python objects, use the :mod:`pickle` module instead -- the +performance is comparable, version independence is guaranteed, and pickle +supports a substantially wider range of objects than marshal. .. warning:: @@ -42,6 +44,12 @@ and dictionaries are only supported as long as the values contained therein are themselves supported; and recursive lists and dictionaries should not be written (they will cause infinite loops). +.. warning:: + + Some unsupported types such as subclasses of builtins will appear to marshal + and unmarshal correctly, but in fact, their type will change and the + additional subclass functionality and instance attributes will be lost. + .. warning:: On machines where C's ``long int`` type has more than 32 bits (such as the