Seite 1 von 1
Arbeitsspeicher aufräumen
Verfasst: Donnerstag 4. Januar 2018, 13:31
von 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
Re: Arbeitsspeicher aufräumen
Verfasst: Donnerstag 4. Januar 2018, 13:52
von kbr
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.
Re: Arbeitsspeicher aufräumen
Verfasst: Donnerstag 4. Januar 2018, 13:55
von __deets__
Weitere Massnahmen: Python 64 Bit benutzen, und natuerlich entsprechend viel Speicher anschaffen.
Re: Arbeitsspeicher aufräumen
Verfasst: Donnerstag 4. Januar 2018, 14:12
von narpfel
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.
Re: Arbeitsspeicher aufräumen
Verfasst: Donnerstag 4. Januar 2018, 14:13
von Sirius3
@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.
Re: Arbeitsspeicher aufräumen
Verfasst: Montag 22. Januar 2018, 15:52
von PyFM
Danke für eure hilfe, mein Programm leuft jetzt!
