Arbeitsspeicher aufräumen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
PyFM

In Meinem Programm müssen weit über eine Millionen Objekte erstellt werten, doch dabei erzeugt es immer einen Fehler.
Der Grund: Python bekommt nicht genug Arbeitsspeicher zugewisen.

Wie kann man Objekte, die man nicht mehr braucht aus dem Arbeitsspeicher löchen?

Danke für eure Hilfe
PyFM
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

PyFM hat geschrieben:Wie kann man Objekte, die man nicht mehr braucht aus dem Arbeitsspeicher löchen?
Gar nicht, das übernimmt der Garbage-Collector. Du musst allerdings dafür sorgen, dass auf nicht benötigte Objekte keine Referenzen mehr verweisen – die Objekte also unerreichbar werden. Dann erst greift der Garbage-Collector. Weiter kannst Du versuchen, die Objekte durch den Einsatz von Slots zu verkleinern. Bei sehr vielen Objekten kann das den Speicherbedarf deutlich reduzieren.
__deets__
User
Beiträge: 14480
Registriert: Mittwoch 14. Oktober 2015, 14:29

Weitere Massnahmen: Python 64 Bit benutzen, und natuerlich entsprechend viel Speicher anschaffen.
narpfel
User
Beiträge: 643
Registriert: Freitag 20. Oktober 2017, 16:10

Was auch noch oft hilft (je nach Anwendungszweck): Nicht alle Objekte gleichzeitig erstellen. Wenn man das Problem mit Iteratoren lösen kann, anstatt alle Objekte in eine Liste o. Ä. zu stecken, dann verbraucht man natürlich weniger Speicher.

Was machst du denn? Eventuell gibt’s eine Bibliothek, die Datenstrukturen für deinen Anwendungsfall in C implementiert hat. Für number crunching bietet sich zum Beispiel `numpy` und `scipy` an.
Sirius3
User
Beiträge: 17703
Registriert: Sonntag 21. Oktober 2012, 17:20

@PyFM: brauchst Du alle Million Objekte auf einmal? Suchst Du also nach einer Möglichkeit pro Objekt weniger Speicher zu verwenden? Oder sind immer nur ein paar Objekte nötig, dann hast Du irgendwo einen Programmierfehler, den man aber ohne den Code zu kennen auch schlecht finden kann.
PyFM

Danke für eure hilfe, mein Programm leuft jetzt! :D
Antworten