Speicherbedarf, Speicher freigeben, Unterschiede IDLE

  • Python

    Speicherbedarf, Speicher freigeben, Unterschiede IDLE

    Hallo ich habe ein Programm, was in Dauerschleife Daten abfragt, bearbeitet und wieder ausgibt. Das Programm sieht in den wesentlichen Teilen wie folgt aus, da die einzelnen Datensätze aus mehreren Einzelteilen bestehen habe ich ein 2-D-Array konstruiert:



    Quellcode

    1. while True:
    2. array=[]
    3. i=1
    4. while i<=100:
    5. ...
    6. daten1 und daten2 werden erzeugt bzw berechnet
    7. ...
    8. datensatz=[daten1, daten2]
    9. array.append(datensatz)
    10. i=i+1
    11. ...
    12. innerhalb der Dauerschleife werden andere Sachen mit dem Array gemacht, ausgegebn usw
    13. ...
    14. del array


    In dem Array sind somit 100x Datensatz, mit denen im weiteren Verlauf was gemacht wird, danach aber nicht mehr gebraucht werden. Am Ende innerhelb der Dauerschleife habe ich schon mal del eingefügt aufgrund eigener Recherchen.

    Jetzt zu meinem Problem: Ich habe das Programm auf 2 Rechnern jeweils unter IDLE laufen. Bei einem Rechner bleibt der verwendete Arbeitsspeicher konstant bei ca 15MB, also sehr gering. Auf dem anderen Rechner steigt der Speicherverbrauch mit längerer Laufzeit an bis es mehrere GB sind und stürzt dann ab. Auf den Rechnern laufen die Versionen 3.7.0 und 3.7.0b1, letztere auf dem Rechner mit dem hohen Speicherverbrauch. Auf dem andere habe ich gerade nochmal nachgesehen und der Speicher ist mittlwerweile etwas mehr als die genannten 15 MB.

    Auf dem Rechner mit der Version 3.7.0b1 werde ich auch noch mal ein Update auf die neuste Verison machen, aber allgemein meine Fragen:
    - Gibt es bei IDLE irgendwelche Einstellungen bzgl Speiche rdie in meinem Fall bei der einen Version standardmäßig aktiviert sind oder nicht?
    - Wie kann ich allgemein den Speicherplatz von Variablen nach Beendigung von Schleifen wieder freigeben? Macht Python das automatisch nach Beendigung einer Funktion? Dann könnte ich mein Programm vom Prinziop komplett in eine Funktion schreiben, die dann nur noch durch die Dauerschleife immer wieder aufgreufen wird.


    Danke im voraus