Memory Leak after Py_Finalize()
gagsl-py2 at yahoo.com.ar
Sat Mar 28 07:52:08 CET 2009
En Thu, 26 Mar 2009 14:51:00 -0300, Tom <tom_caton at xyratex.com> escribió:
> I have ported Python, numarray and numpy to the PharLap Embedded
> Operating System. Python 2.5.2 numpy 1.3.0b1
> My problem is the massive memory loss coming back after Py_Finalize()
> when using numpy. I have seen similar posts but am unclear how to
> proceed. Here are my symptomns:-
>>>>> import numpy
> This gives me a 2.34 MB memory loss each time through. Its similar for
I'd ask in a numpy specific forum.
> Do I need to do something before coming back from Py_Main ? (like
> setting all the reference counts to 0 and forcing the garbage
> collector to run). Doing a >>> del numpy is not enough.
I'm afraid there isn't much you can do -- calling gc.collect() should not
hurt, but I don't think it would help a lot either.
> I understand there is a memory loss when stopping and starting Python
> (I observe it to be about 70K) - my problem is that I dont know how to
> shutdown numpy cleanly - I want the opposite of "import numpy".
Unfortunately, the Python API doesn't have an "uninitialize module"
function/callback (not before 3.0). A lot of modules allocate memory upon
initialization and never release it; some do that always, even if it has
already been initialized. (Even worse, some modules carelessly store
Python objects as static variables; using an old instance with a new
interpreter is likely to crash Python...)
So, if at all possible, try to avoid calling Py_Initialize and Py_Finalize
more than once.
More information about the Python-list