[Python-Dev] finalization again (original) (raw)
Barry A. Warsaw bwarsaw@cnri.reston.va.us
Thu, 9 Mar 2000 23:21:46 -0500 (EST)
- Previous message: [Python-Dev] finalization again
- Next message: [Python-Dev] finalization again
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Okay, I had a flash of inspiration on the way home from my gig tonight. Of course, I'm also really tired so I'm sure Tim will shoot this down in his usual witty but humbling way. I just had to get this out or I wouldn't sleep tonight.
What if you timestamp instances when you create them? Then when you have trash cycles with finalizers, you sort them and finalize in chronological order. The nice thing here is that the user can have complete control over finalization order by controlling object creation order.
Some random thoughts:
Finalization order of cyclic finalizable trash is completely deterministic.
Given sufficient resolution of your system clock, you should never have two objects with the same timestamp.
You could reduce the memory footprint by only including a timestamp for objects whose classes have del's at instance creation time. Sticking an del into your class dynamically would have no effect on objects that are already created (and I wouldn't poke you with a pointy stick if even post-twiddle instances didn't get timestamped). Thus, such objects would never be finalized -- tough luck.
FIFO order /seems/ more natural to me than FILO, but then I rarely create cyclic objects, and almost never use del, so this whole argument has been somewhat academic to me :).
The rule seems easy enough to implement, describe, and understand.
I think I came up with a few more points on the drive home, but my post jam, post lightbulb endorphodrenalin rush is quickly subsiding, so I leave the rest until tomorrow.
its-simply-a-matter-of-time-ly y'rs, -Barry
- Previous message: [Python-Dev] finalization again
- Next message: [Python-Dev] finalization again
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]