[Python-Dev] gcmodule issue w/adding __del__ to generator objects

Phillip J. Eby pje at telecommunity.com
Sat Jun 18 23:56:54 CEST 2005


At 05:50 PM 6/18/2005 -0400, Phillip J. Eby wrote:
>Working on the PEP 342/343 generator enhancements, I've got working
>send/throw/close() methods, but am not sure how to deal with getting
>__del__ to invoke close().  Naturally, I can add a "__del__" entry to its
>methods list easily enough, but the 'has_finalizer()' function in
>gcmodule.c only checks for a __del__ attribute on instance objects, and for
>tp_del on heap types.
>
>It looks to me like the correct fix would be to check for tp_del always,
>not just on heap types.  However, when I tried this, I started getting
>warnings from the tests, saying that 22 uncollectable objects were being
>created (all generators, in test_generators).
>
>It seems that the tests create cycles via globals(), since they define a
>bunch of generator functions and then call them, saving the generator
>iterators (or objects that reference them) in global variables
>
>after investigating this a bit, it seems to me that either has_finalizer()
>needs to

Whoops.  I hit send by accident.  Anyway, the issue seems to mostly be that 
the tests create generator-iterators in global variables.  With a bit of 
effort, I've been able to stomp most of the cycles.


>_______________________________________________
>Python-Dev mailing list
>Python-Dev at python.org
>http://mail.python.org/mailman/listinfo/python-dev
>Unsubscribe: 
>http://mail.python.org/mailman/options/python-dev/pje%40telecommunity.com



More information about the Python-Dev mailing list