[ZODB-Dev] URGENT: ZODB down - Important Software Application at CERN
Hanno Schlichting
hannosch at hannosch.eu
Wed May 27 06:17:36 EDT 2009
Chris Withers wrote:
> Hanno Schlichting wrote:
>> Nope. DateTime objects are plain old-style classes and don't inherit
>> from persistent.*.
>
> Hmm, oh well, my bad...
> In that case it must just be that their pickled form is huge compared to
> an int ;-)
Sure:
len(cPickle.dumps(DateTime.DateTime(), 1)) == 392
Where as their float representation is:
len(cPickle.dumps(DateTime.DateTime().timeTime(), 1)) == 10
> They are incredibly expensive to unpickle since all
>> the DWIM magic in their __init__ get called each time, though.
>
> How come? Unpickling doesn't call __init__ and I don't see why the DWIM
> magic would be needed anyway, since everything has already been parsed.
How would a new instance of a class be constructed without calling the
init or new? Look at the _instantiate method in pickle.py, when it does:
value = klass(*args)
What happens on unpickling is that a new DateTime instance representing
"just now" is generated and then that instance is updated with the
values from the pickle.
Hanno
More information about the ZODB-Dev
mailing list