memoize(): Reworded the docs to try to disentangle the Pickler's memo

dict from the Unpickler's memo (which is a different beast!).
This commit is contained in:
Tim Peters 2003-01-27 21:22:10 +00:00
parent bbf63cd05c
commit e46b73f5b3
1 changed files with 10 additions and 6 deletions

View File

@ -175,14 +175,18 @@ class Pickler:
def memoize(self, obj):
"""Store an object in the memo."""
# The memo is a dictionary mapping object ids to 2-tuples
# that contains the memo value and the object being memoized.
# The memo value is written to the pickle and will become
# The Pickler memo is a dictionary mapping object ids to 2-tuples
# that contain the Unpickler memo key and the object being memoized.
# The memo key is written to the pickle and will become
# the key in the Unpickler's memo. The object is stored in the
# memo so that transient objects are kept alive during pickling.
# Pickler memo so that transient objects are kept alive during
# pickling.
# The use of the memo length as the memo value is just a convention.
# The only requirement is that the memo values by unique.
# The use of the Unpickler memo length as the memo key is just a
# convention. The only requirement is that the memo values be unique.
# But there appears no advantage to any other scheme, and this
# scheme allows the Unpickler memo to implemented as a plain (but
# growable) array, indexed by memo key.
d = id(obj)
memo_len = len(self.memo)
self.write(self.put(memo_len))