mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
Merged revisions 72223 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r72223 | antoine.pitrou | 2009-05-02 23:13:23 +0200 (sam., 02 mai 2009) | 5 lines Isue #5084: unpickling now interns the attribute names of pickled objects, saving memory and avoiding growth in size of subsequent pickles. Proposal and original patch by Jake McGuire. ........
This commit is contained in:
parent
6fa98fb7ec
commit
a9f48a0d4f
4 changed files with 42 additions and 2 deletions
|
@ -1195,7 +1195,15 @@ class _Unpickler:
|
|||
if isinstance(state, tuple) and len(state) == 2:
|
||||
state, slotstate = state
|
||||
if state:
|
||||
inst.__dict__.update(state)
|
||||
d = inst.__dict__
|
||||
intern = sys.intern
|
||||
try:
|
||||
for k, v in state.items():
|
||||
d[intern(k)] = v
|
||||
# keys in state don't have to be strings
|
||||
# don't blow up, but don't go out of our way
|
||||
except TypeError:
|
||||
d.update(state)
|
||||
if slotstate:
|
||||
for k, v in slotstate.items():
|
||||
setattr(inst, k, v)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue