[Tutor] Shelve doesn't free up memory
Timo
timomlists at gmail.com
Mon Mar 30 09:54:10 CEST 2009
Hello, I have a PyGTK application where the user is able to click on a
button, then a new dialog pops up with a treeview and the program fills
this view with data from a shelve.
Everything works, the data is being added to the treeview. The only
problem is, that when I close the dialog, it doesn't free the memory. So
when I click the button again, the same amount of memory is added being
used. Then close the window, click again, again the same amount of
memory, and so on...
Now it only takes about 5 to 8 mb, but this shouldn't be.
I do call the shelve.close(), but that doesn't do it apparently. Do I
need to do something when I close my window?
Here are parts of the code:
# Result window => Called when button is clicked
import Results
class ResultWindow:
def __init__(self):
# Build the dialog and the treeview...
self.get_results()
def get_results(self):
self.liststore.clear()
for person in self.persons:
dics = Results.read_result(person)
if not dics:
continue
for dic in dics:
date = dic['date']
point = dic['point']
place = dic['place']
out = dic['out']
self.liststore.append([date, point, place, out])
# Results file
import shelve
def read_result(person):
results = []
s = shelve.open(RESULTFILE)
try:
results = s[person]
except KeyError:
# print "No results for this person"
pass
finally:
s.close()
return results
More information about the Tutor
mailing list