Nicht auslagerbarer Speicher wächst beständig

Fragen zu Tkinter.
Benutzeravatar
Robin
User
Beiträge: 50
Registriert: Dienstag 26. Juni 2007, 10:47

Freitag 28. November 2008, 15:27

Hallo Pytho-Forum,

mit diesem Programm wächst der "Nicht auslagerbarer Speicher" beständig (0.1MB in 30 Sekunden).
Ist die Kombination Thread-Tkinter ungeeignet?
Welches Grafikmodul ist besser oder ist mein Rechner zu langsam?

Code: Alles auswählen

from Tkinter import *
import time
import thread

def go():
    thread.start_new_thread(endless,())

def endless():
    i = 0
    while 1:
        l.configure(text=str(i))
        time.sleep(.1)       
        i += 100

root = Tk()
l = Label(root)
l.pack()
go()
root.mainloop() 
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Freitag 28. November 2008, 15:34

Man sollte nur vom Haupt-Thread auf die GUI zugreifen. Hierzu gibt es im Forum zahlreiche Artikel.
MfG
HWK
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Freitag 28. November 2008, 15:38

Benutzeravatar
Robin
User
Beiträge: 50
Registriert: Dienstag 26. Juni 2007, 10:47

Freitag 28. November 2008, 16:05

der link hilft mir nicht wirklich weiter ...
Zu dem Thema habe ich schon viele Programmiervorschläge erhalten,
doch bei allen Vorschlägen wächst der "Nicht auslagerbare" Speicher.
Entweder ist Python für permanente Grafikausgaben ungeeignet oder
mein Rechner zu schwach ...
Benutzeravatar
wuf
User
Beiträge: 1419
Registriert: Sonntag 8. Juni 2003, 09:50

Freitag 28. November 2008, 17:37

Hallo Robin

Ich habe dein Code-Snippet ca 10min. laufen lassen. Bei mir wächst der Speicher nicht.

Mein Setup:
Linux SuSE 10.0
Python 2.5

Enthält die while-Schleife noch andere Anweisungen die du hier nicht aufgeführt hast?

Grüss wuf :wink:
Take it easy Mates!
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Samstag 29. November 2008, 11:57

Unter OS/X wächst der Speicherbedarf langsam aber stetig wie beschrieben.

Stefan
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Samstag 29. November 2008, 12:29

Gentoo Linux
Tk: 8.4.19-r1
Python: 2.6-r4

Bei mir wächst es auch nur marginal (2 Minuten -> +200Kbyte)
DasIch
User
Beiträge: 2435
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Samstag 29. November 2008, 12:35

Arch Linux
Python 2.6

Verhalten wie beschrieben, das Wachstum liegt, wie bei cofi, bei etwa 200kb/min


Ich gehe davon aus dass Tkinter da mist baut, generell würde ich eh zu gtk oder qt raten.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Samstag 29. November 2008, 12:53

Suse 10.0 Python 2.5:

Speicherbedarf wächst in den ersten Minuten langsam an, bis auf 64 KB über dem Speicherbedarf beim Start. Danach findet keine Erhöhung mehr statt.
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Samstag 29. November 2008, 13:36

Windows XP, Python 2.4:
Speicher bleibt konstant.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Samstag 29. November 2008, 13:56

DasIch hat geschrieben:Ich gehe davon aus dass Tkinter da mist baut, generell würde ich eh zu gtk oder qt raten.
Wie kommst du zu der Annahme, dass Tkinter hier der Bösewicht ist?
Warum nicht dem Betriebssystem anlasten? Offenbar sind die Unterschiede im Speicherverbrauch auch vom Betriebssystem abhängig.
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Samstag 29. November 2008, 14:12

Kann mal jemand ausprobieren, ob das Problem auch noch besteht, wenn man Zeile 12

Code: Alles auswählen

l.configure(text=str(i))
durch

Code: Alles auswählen

root.after_idle(lambda: l.configure(text=str(i)))
ersetzt?
MfG
HWK
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Samstag 29. November 2008, 14:50

Ändert bei mir nichts am Verhalten:
Innerhalb der ersten ca. 6 min ein Speichermehrverbrauch von insgesamt 64 KB, danach wird kein weiterer Speicher mehr gezogen (insgesamt 30 min laufen lassen).
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Samstag 29. November 2008, 15:22

@Robin: Wie ist es bei Dir?
yipyip
User
Beiträge: 418
Registriert: Samstag 12. Juli 2008, 01:18

Samstag 29. November 2008, 16:45

Den marginalen Speicherplatzmehrverbrauch von
Robin's Code kann ich auch bestätigen.
(Xubuntu 8.04, Python 2.5)

Bei meiner Version kann ich diesen nicht feststellen.
http://paste.pocoo.org/show/93018/

:wink:
yipyip
Antworten