program loaded in memory

A

Anatoli Hristov

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 ?
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())

loop = 0
while loop == 0:

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

Thanks
 
S

Steven D'Aprano

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.
 
G

Grant Edwards

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.

I'm curious how there can be a memory leak in py2exe. I thought all
it did was bundle up the python interpreter and the required libraries
into a "private" python installation that's then invoked by the
wrapper. Does py2exe actually do something after the application has
started?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,982
Messages
2,570,190
Members
46,736
Latest member
zacharyharris

Latest Threads

Top