[Python-Dev] Python Language Summit EuroPython 2010 (original) (raw)

Antoine Pitrou solipsis at pitrou.net
Wed Jul 21 17:58:19 CEST 2010


On Wed, 21 Jul 2010 11:42:00 -0400 Jesse Noller <jnoller at gmail.com> wrote:

On Wed, Jul 21, 2010 at 11:11 AM, Tim Golden <mail at timgolden.me.uk> wrote: [...snip...] > A messy discussion turned on the question of garbage collection of module > objects, and the order in which finalisers are called if at all, especially > when reference cycles exist. Marc Andre was proposing a cleanup magic > function > for Python modules, which would enable the implementer to define the order > in which resources are released / closed down. This is quite a subtle area > and raised the issue of unfinalised objects in a reference cycle whose > memory has been freed out from under them but which still exist. Martin > described > the Java approach where finalisers are called once and then flagged so > they are not called again even if their object is resurrected. This sounded > like a useful approach for Python but would break code which expected to > be able to resurrect an object during its del method... which is not > expected to account for much code. > > Guido pointed out that no-one can be expected to hold enough of the > complexities > of this area of Python's implementation in their head, and that an > implementation > of some sort would need to be written so that the corner-cases could emerge.

FWIW; I'm currently dealing with a bug in this area w.r.t multiprocessing and threads and modules we have imported vanishing due to this issue. I'm interested in hearing more.

One common resolution is to not use a del method, but instead a weakref callback which will do the necessary cleanup of a certain set of resources. This is of course not applicable in all situations.



More information about the Python-Dev mailing list