Hallo,
ich hab folgendes Problem:
Ich schreibe ein Programm, in dem aus einem Namen ein dreidimensionales Modell erzeugt wird (ich möchte jetzt hier nicht alles erläutern^^), jedenfalls allen dabei einige Arbeiten mit oftmals großen Arrays an, später lungert dazu ncoh ein Haufen Objekte von VPython im Arbeitsspeicher herum.
Deshalb nmeine Frage: Gibt es in Pyton irgendeine Möglichkeit, den Speicher aufzuräumen, weil spätestens nach 3 durchlaäufen ist schicht im schacht. Die banalste Lösung wäre wie gesagt immer wieder ein Neustart, aber es ist echt doof, jedesmal wieder üdie benutzeroberfläche aufzubauen...
Vielen Dank
cupibacardi
Speicherproblem - Speicherbereinigung
-
- User
- Beiträge: 2
- Registriert: Montag 10. August 2009, 22:43
Don't let your mind wander - it'S too little to be let out alone.
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Erm ja: http://docs.python.org/library/gc.html
Allerdings laeuft der GC sowieso mit und reisst sich unter den Nagel, was nicht mehr benoetigt wird, d.h. es ist wahrscheinlicher, dass du ein irgendwo Memory Leak hast oder einfach ineffizienten Code schreibst.
Die Moeglichkeit, dass eben so viel benoetigt wird, gibt es aber auch. Generell kann man da nicht viel ohne Code sagen.
Allerdings laeuft der GC sowieso mit und reisst sich unter den Nagel, was nicht mehr benoetigt wird, d.h. es ist wahrscheinlicher, dass du ein irgendwo Memory Leak hast oder einfach ineffizienten Code schreibst.
Die Moeglichkeit, dass eben so viel benoetigt wird, gibt es aber auch. Generell kann man da nicht viel ohne Code sagen.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Genauer gesagt: Was nicht mehr referenziert wird.cofi hat geschrieben:Allerdings laeuft der GC sowieso mit und reisst sich unter den Nagel, was nicht mehr benoetigt wird
Wenn man mal irgendwann ein Objekt gebunden hat und das nicht mehr benötigt, sollte IMHO auch ein `del objektname` helfen. Zumindest insoweit ich das mit meinem rudimentären Wissen über Pythons Interna beurteilen kann. *mal-vorsichtig-sei*
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
`del` sollte man in sauber geschriebenen Programmen nicht benötigen, denn in sauber geschriebenen Programmen verschwinden die Referenzen auf nicht mehr benötigte Elemente sobald die Funktion endet, somit werden am ende der Funktion alle unnötigen Elemente implizit entsorgt.snafu hat geschrieben:Wenn man mal irgendwann ein Objekt gebunden hat und das nicht mehr benötigt, sollte IMHO auch ein `del objektname` helfen.
Wäre ja auch ziemlich qualvoll, am Ende der Funktionen alles mühsam zu ``free()``n.. ähh, ``del``n.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Hoi,
herzlichen willkommen im Forum, cupibacardi. Abgesehen von den Anmerkungen hier: Es gibt für Python diverse 3D Graphiksoftwarepakete. Was brauchst Du denn?
Gruß,
Christian
herzlichen willkommen im Forum, cupibacardi. Abgesehen von den Anmerkungen hier: Es gibt für Python diverse 3D Graphiksoftwarepakete. Was brauchst Du denn?
Gruß,
Christian
-
- User
- Beiträge: 2
- Registriert: Montag 10. August 2009, 22:43
Danke , aber ich habe bereits alles was Grafik angeht, WxPython und VisualPython, das ganze läuft ja wie gesagt nur nach 3 Molekülen lahm.CM hat geschrieben:Hoi,
herzlichen willkommen im Forum, cupibacardi. Abgesehen von den Anmerkungen hier: Es gibt für Python diverse 3D Graphiksoftwarepakete. Was brauchst Du denn?
Gruß,
Christian
Ich werd mir jetzt erstmal den Garbage Collector anschaun
Vielen Dank für die schnellen Antworten.
Don't let your mind wander - it'S too little to be let out alone.
Nein, hast Du nicht gesagt - oben waren es einfach nur "drei Durchläufe", von was auch immer .cupibacardi hat geschrieben:Danke , aber ich habe bereits alles was Grafik angeht, WxPython und VisualPython, das ganze läuft ja wie gesagt nur nach 3 Molekülen lahm.
Was sind "Moleküle"? Kleine Moleküle in Orbitaldarstellung (was sonst könnte soviel Speicher im Falle kleiner Moleküle fressen)? Proteinstrukturen - in welcher Darstellung? Gar große Komplexe? Für all dies gäbe es (bereits implementierte) Lösungen teils in Python, teils mit Pythoninterface.
Wie auch immer ... wenn das passiert, machst Du was falsch. Und ich möchte vermuten, dass es nicht nur am gc liegt. Dein Code ist wahrscheinlich recht umfangreich, zu umfangreich zum posten. Aber vielleicht magst Du hier Dein Konzept schildern, da könntest Du u. U. auch schon Hilfe erhalten.
Gruß,
Christian