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?
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 ...
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.
Ä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).
numerix hat geschrieben:Wie kommst du zu der Annahme, dass Tkinter hier der Bösewicht ist?
Warum nicht dem Betriebssystem anlasten?
$Betriebssystem ist sicherlich öfter und besser getestet als Tkinter. Desweiteren fällt Tkinter auch sonst so häufig positiv auf weswegen ja ein großteil aller Anwendungen Tkinter GUIs benutzen.
@HWK:
Hab's jetzt mit Deinem Vorschlag ca. 5 min laufen lassen,
auch hier vermindert sich die Grösse des freien Speichers
ähnlich wie schon vorher beobachtet.
DasIch hat geschrieben:Desweiteren fällt Tkinter auch sonst so häufig positiv auf weswegen ja ein großteil aller Anwendungen Tkinter GUIs benutzen.
Das ist unsachliche Ironie.
Es gibt ganz sicher gute Gründe, Tkinter nicht zu benutzen, vor allem, weil es hinsichtlich seiner Möglichkeiten hinter anderen einschlägigen GUI-Toolkits zurückbleibt und die Optik nicht ganz an das heranreicht, was man heutzutage als uptodate ansieht.
Aber Tkinter ist nicht grundsätzlich problematisch.
Wie sieht's denn aus, wenn ihr mal das `i` weglasst, da werden ja schliesslich ständig neue `int`-Objekte erzeugt. Und die werden vom Code der Speicher für Objekte verwaltet in "Gruppen" verwaltet, und so eine Gruppe wird erst wieder frei gegeben, wenn alle enthaltenen Objekte freigegeben wurden.
Wobei freigegeben auch nur bedeutet, dass das `free()` der C-Laufzeitbibliothek für den Speicherblock aufegrufen wird. Ob *die* dann wiederum den Speicher auch an das Betriebssystem zurück gibt, ist in keiner Weise garantiert. Und wenn sie das nicht tut, ist das vielleicht unangenehm, aber kein Fehler.
Ich denke auch nicht das man die Schuld da so vorschnell bei `Tkinter` suchen sollte. Oh, und Tk könnte auch schuld sein.
Was ich auch schon einmal hatte, war, dass der Speicherverbrauch bei einem Tkinterprogramm mit vielen Grafikveränderungen in kurzer Zeit auf ca. 10 MiB gewachsen ist, bevor er dann nahezu schlagartig wieder um 10 MiB zurück ging. Also vielleicht mal versuchen, ob manuelles Aufrufen des Garbage-Collectors einen sichtbaren Erfolg hat.
DasIch hat geschrieben:$Betriebssystem ist sicherlich öfter und besser getestet als Tkinter.
Ironie hin oder her, aber das Argument gilt durchaus. Das Linux-Speichermodell ist nun mal schon Jahrelang auf extremste Weise erprobt, das wird bei Tkinter, Tk und Tcl weniger der Fall sein.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice