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
Arbeitsspeicher aufräumen
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.PyFM hat geschrieben:Wie kann man Objekte, die man nicht mehr braucht aus dem Arbeitsspeicher löchen?
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.
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.
@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.