program loaded in memory

Steven D'Aprano steve+comp.lang.python at pearwood.info
Sun Oct 21 22:50:14 EDT 2012


On Mon, 22 Oct 2012 02:02:27 +0200, Anatoli Hristov wrote:

> Hello,
> 
> I need an advice about a small script I run 24/24 7/7.
> 
> It's a script converted to EXE using py2exe and this script takes -
> grows 30kb RAM on each loop which means that for 10hours it grows up
> with 180mb memory. is there something I can do ?

Probably. Find the memory leak and fix it.

What happens if you call it directly from Python, instead of using py2exe? 
Perhaps the memory leak is in py2exe.


> From the ini file I'm loading only the URL and the interval of
> downloading the file
> The script:
> 
> import time
> import urllib
> 
> exec(open("iccm.ini").read())

If you really must execute your data file as code, use:

execfile("iccm.ini")

in Python 2.x. Or better still, change the file to "iccm.py" and do:

from iccm import URL, interval

Or even better still, use the ConfigParser module to safely read the INI 
file and extract data from it, without executing it as code. Who knows 
what bugs might be caused by that?


> loop = 0
> while loop == 0:

Since that is never changed, the better way is:

while True:  # loops forever
    ...



>     time.sleep(interval*60)
>     try:
>         urllib.urlretrieve ('"'URL'"'+"/hours.xml",
>         "c:\\config\\hours.xml")


That's not your code, because it gives a syntax error. That code cannot 
run at all.

Please show us your ACTUAL code.


There are no obvious memory leaks in the code you show. Probably the 
memory leak is in the code you haven't shown us.



-- 
Steven



More information about the Python-list mailing list