
Worauf muss ich achten, wenn ich ein Python Skript unendlich lange in einem Loop laufen lassen will, damit nicht zuviel Arbeitsspeicher verbraucht wird? Ich habe nämlich das Problem, dass nach ca. 2-3 Tagen, mein gegebener Arbeitsspeicher von 512MB (ein Droplet auf digitalocean), voll ist und dadurch mein Skript beendet wird.
Wie immer ist mein Skript unglaublich lang und umfangreich und mein Erstlingswerk, also absolut mies geschrieben. Aber natürlich wird überall hier und da geflickt und verbessert, damit es iwann mal kein mieser Code mehr ist. Nun ist also das Arbeitsspeicher Problem dran.
Kurz zusammengefasst erstellt und verwendet mein Skript viele Dictionaries und Listen. Außerdem gibt es viele print()'s aus und schreibt die wichtigsten Meldungen in txt Dateien mithilfe von:
Code: Alles auswählen
with open('History.txt', 'a') as f :
f.write("%s" % text)
D.h mit "service MeinSkript start" starte ich es und mit "journalctl -u MeinSkript --since..." frage ich einige prints ab.
Die Dauerschleife dauert ungefähr 10 sekunden. Die meisten dictionaries sind in self. Form und werden zu Beginn einmal leer erstellt. In jedem Durchlauf sollen sie wieder verwendet werden und einzelne Werte darin aktualisiert werden. dazu schreibe ich dann einfach sowas wie self.beispieldict[essen] = 3 usw. Natürlich verwende ich innerhalb von definitionen auch listen und dictionaries ohne self. , aber ich glaube die sollten kein Problem sein, da sie nach Beenden der definition ja wieder gelöscht werden, oder?
Nun frage ich mich, warum soviel Arbeitsspeicher verbraucht wird. Liegt es daran, dass es als service läuft (das journal beinhaltet irgendwann ja ziemlich viele prints)? Oder an den self. Variablen, obwohl diese ja wiederverwertet werden? Oder daran, dass das Schreiben in eine txt Datei nicht richtig gemacht wird?
Ich denke wir probieren es erstmal mit dem journal.
Wie könnte ich die im journal gespeicherten prints via skript löschen?
PS: Das Forum scheint seit ein paar Monaten ein neues Design zu haben, aber in allen alten Beiträgen werden dadurch die Python Codes nicht mehr schön angezeigt, da steht nur noch code=python file=Untitled.py, anstatt dass es richtig formatiert wird. Wird das noch irgendwann gefixt oder bleiben alte Beiträge nun unübersichtlich? (wurde sicher schonmal iwo angesprochen, aber es wundert mich schon sehr, dass es nach sovielen monaten noch immer nicht verbessert wurde O.ô )