Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > Memory Leak after Py_Finalize()

Reply
Thread Tools

Memory Leak after Py_Finalize()

 
 
Tom
Guest
Posts: n/a
 
      03-26-2009
Hi,
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.
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 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".
 
Reply With Quote
 
 
 
 
Gabriel Genellina
Guest
Posts: n/a
 
      03-28-2009
En Thu, 26 Mar 2009 14:51:00 -0300, Tom <(E-Mail Removed)> 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

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Memory leak after closing thread. Michal C++ 12 12-08-2009 10:56 PM
Py_Finalize Memory Leak after import numpy tom_caton Python 0 03-27-2009 11:35 AM
Memory leak even after deleting memory pointers from vector cham C++ 5 09-25-2008 10:30 AM
Leak or no leak ?? Richard Heathfield C Programming 4 07-10-2006 11:37 AM
JVM Memory leak after interrupting threads?? slubowsky@netzero.net Java 4 01-27-2005 06:13 PM



Advertisments