Mitsuhiko on reddit brings up a good issue that I was not aware of: a
bug in exec.

code="""
class Foo(object):
    def __del__(self):
        pass
foo = Foo()
"""
while True: exec code in {}

causes a memory leak. Web2py does this. The memory leak is small in
practice and in fact nobody noticed it. Yet it is a concern, in
theory.

So far I have the current solution

code="""
class Foo(object):
    def __del__(self):
        pass
foo = Foo()
"""
import gc
while True:
    exec code in {}
    gc.collect()

It works for me and I cannot reproduce the leak.
I patched trunk with this. Give it a try and let me know what you
think.

Massimo

Reply via email to