habe ein kleines Testprogramm auf Lenny_amd64 Stable (Python 2.5.2) laufen lassen. Alles IO.
Auf Squeeze_amd64 (Python2.6.6) wird der Speicher (Top, VIRT und RES) immer mehr verbraucht.
Im echten Programm werden die Ressourcen (4 GB Hauptspeicher +Swap) innerhalb eines Wochenendes verbraten. Der Rechner ist dann kaum noch bedienbar.
Im Beispiel habe ich Pme eliminiert.
Mit "loop" sieht man das Problem am schnellsten.
Code: Alles auswählen
title = 'Text Speicher'
import time
import Tkinter
class Demo:
def __init__(self, parent):
self.parent=parent
self.sb= Tkinter.Scrollbar(parent)
self.st = Tkinter.Text(parent,yscrollcommand=self.sb.set,undo='false',maxundo=1)
self.writeButton = Tkinter.Button(root, text = 'write', command = self.write)
self.clearButton = Tkinter.Button(root, text = 'clear', command = self.clear)
self.loopButton = Tkinter.Button(root, text = 'loop', command = self.loop)
self.sb.pack(side=Tkinter.RIGHT, fill=Tkinter.Y)
self.st.pack(padx = 5, pady = 5, fill = 'both', expand = 1)
self.writeButton.pack(side=Tkinter.LEFT)
self.clearButton.pack(side=Tkinter.LEFT)
self.loopButton.pack(side=Tkinter.LEFT)
#################################################################
def write(self):
print 'You clicked on write'
for i in range(5000):
self.st.insert('end',str(i)+"xxxxxxxxxxxxxxxxxxxxxx\n")
self.st.see('end')
self.st.update()
def clear(self, num=0):
print 'You clicked on clear'
self.st.delete('1.0','end')
self.st.insert('end',num)
self.st.insert('end',"\n")
self.st.update()
self.st.clipboard_clear()
def loop(self):
for x in range(200):
self.write()
time.sleep(1)
self.clear(x)
######################################################################
# Create demo in root window for testing.
if __name__ == '__main__':
root = Tkinter.Tk()
root.title(title)
exitButton = Tkinter.Button(root, text = 'Exit', command = root.destroy)
exitButton.pack(side = 'bottom')
widget = Demo(root)
root.mainloop()