[Python-Dev] finalization again (original) (raw)
Guido van Rossum guido@python.org
Fri, 10 Mar 2000 08:46:43 -0500
- Previous message: [Python-Dev] finalization again
- Next message: [Python-Dev] finalization again
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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.
Forget the clock -- just use a counter that is incremented on each allocation.
- 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 :).
Ai, there's the rub.
Suppose I have a tree with parent and child links. And suppose I have a rule that children need to be finalized before their parents (maybe they represent a Unix directory tree, where you must rm the files before you can rmdir the directory). This suggests that we should choose LIFO: you must create the parents first (you have to create a directory before you can create files in it). However, now we add operations to move nodes around in the tree. Suddenly you can have a child that is older than its parent! Conclusion: the creation time is useless; the application logic and actual link relationships are needed.
- 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
Time flies like an arrow -- fruit flies like a banana.
--Guido van Rossum (home page: http://www.python.org/~guido/)
- Previous message: [Python-Dev] finalization again
- Next message: [Python-Dev] finalization again
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]