En Thu, 26 Mar 2009 14:51:00 -0300, Tom <tom_ca...@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:-

Py_Initialize()
Py_Main()
import numpy
Py_Finalize()

This gives me a 2.34 MB memory loss each time through. Its similar for
numarray.

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.

--
Gabriel Genellina

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to