On Tuesday 20 September 2016 16:19, dl l wrote: > Hi Steven, > > Thanks for reply. > > I logged bug https://bugs.python.org/issue28202. I added more info in this > bug :). > > Yes, it's a workaround to set the global variables to None. But My app just > provide a framework for my customers to run python scripts. That's means > the workaround requires my customers to update their python scripts. That > may make them unhappy :(. Is there a workaround in my code C++ side to call > Python C APIs to resolve the memory leak issue?
Sorry, I wasn't clear. I meant to say that from your C++ side you should try explicitly setting the object to None to see if the __del__ method runs. I don't know C++, which is why I wrote it in Python. Assuming that this really is a memory leak, then you could try walking the module and deleting everything by hand. Again, I'm writing this in Python, but you should write it in C++. # instead of just this: del sys.modules['mymodule'] # PyDict_DelItemString # try this instead mod = sys.modules['mymodule'] namespace = vars(mod) for name in list(namespace.keys()): del namespace[name] # PyDict_DelItemString ? del mod del sys.modules['mymodule'] # PyDict_DelItemString But it might be easiest to just update once the bug is fixed. -- Steven git gets easier once you get the basic idea that branches are homeomorphic endofunctors mapping submanifolds of a Hilbert space. -- https://mail.python.org/mailman/listinfo/python-list