Jim Jewett wrote:

> The checkins list has been struggling with generator reference leaks;
> the latest conclusion was that some are unavoidable because of __del__
> cycles.  That sort of defeats the purpose of resource managers.

Seems to me we need a whole new approach to
finalization that's friendly to cyclic gc,
such as a way of registering a finalizer that
doesn't depend on the original object.

If such a mechanism were available, could it
be used instead of a __del__ method to clean
up after a generator? (I'm asking because I'm
not sure exactly what a generator __del__ needs
to do.)

> As a strawman proposal:
> 
>     deletes = [(obj.__del__.cycle, obj) for obj in cycle
>                           if hasattr(obj, "__del__") and
> hasattr(obj.__del__, "cycle")]
>     deletes.sort()
>     for (cycle, obj) in deletes:
>         obj.__del__()

I think we need to be very careful about doing
anything like this. From what Tim said recently,
the consequences of an object getting its __del__
annotation wrong could be as bad as crashing the
interpreter.

--
Greg
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to