[capi-sig] is deinitialisation of embedded python equal tofullrestart?

Jeff Rush jeff at taupro.com
Mon Jul 16 00:58:38 CEST 2007


Hrvoje Niksic wrote:
> Alexey Nezhdanov <snakeru at gmail.com> writes:
> 
>>> But, barring a bug in Python, that is exactly the situation you
>>> would be in if you didn't reinitialize the interpreter in the first
>>> place.
>> ok, thanks. Still it may be ok for my purposes if I can keep python from 
>> growing forever and just keep it beneath some limit.
> 
> But Python should behave like that anyway.  If your Python is "growing
> forever", it means that there is a bug in Python, or in the code using
> it incorrectly.

A different but somewhat related problem with Python is that the underlying C 
memory manager does not release memory back to the operating system when 
Python releases it to the memory manager.  This leads to a situation where you 
have a momentary need for more memory, say at startup, and then you drop back 
down in usage but never give that memory to other apps.

This is a known problem with the use of Python in embedded devices such as the 
One-Laptop-Per-Child and the OpenMoko cell phone.  I've heard rumors that 
someone is looking at it, especially because of the OLPC project but have no 
other information.

The Parrot/Pynie project (Python on top of the Perl6 engine) is using memory 
pools and mark/sweep so they can rearrange objects behind the scenes and 
release pools back to the OS.  Not that that helps us cPython users of course, 
but I thought it interesting.

-Jeff


More information about the capi-sig mailing list