Wie geht Python mit der Speicherzuordnung um? Gibt es etwas Relevantes über die Speicherzuweisung, über das ich als Entwickler beim Erstellen einer großen Anwendung mit Python nachdenken müsste, oder sollte ich Python vertrauen, um dies optimal zu verwalten?Wie geht Python mit der Speicherzuordnung um?
Antwort
Python behandelt die Zuweisung für Sie, aber es gibt Umstände, in denen Sie explizit die Zuweisung aufheben sollten, um Python oder das weitere System daran zu hindern, Speicher zu verarbeiten. del x
entfernt den Namen x
von allen Daten, an die es angehängt ist, und wenn die Datenreferenzzahl Null wird, dann sind diese Daten für Garbage Collection geeignet, wenn der Garbage Collector als nächstes aufgerufen wird. Was sicher passiert ist, bevor das Programm fehlschlägt, weil es keinen Speicher mehr hat.
Sie können den Garbage Collector explizit aufrufen (Standard Python-Modul gc
). gc.collect()
sagt es eine vollständige Sammlung sofort zu tun, wenn Sie nicht möchten, dass es zufällig zu einem späteren Zeitpunkt passiert. Es gibt eine Reihe anderer Dinge, die Sie tun können, um das Verhalten auf die Bedürfnisse Ihres Programms abzustimmen. Sie können sie beispielsweise für einen Codeabschnitt deaktivieren und erneut aktivieren, dessen Echtzeitverhalten wichtig ist und dessen Abwanderung von temporären Objekten gering ist. Weitere Informationen finden Sie unter https://docs.python.org/3/library/gc.html.
Müllsammlung eines Objekts kann sein, wenn eine wichtige Säuberung von externen Einheiten stattfindet. Das einfachste Beispiel ist f=open("some.file" ,"w")
. Wenn Sie with
nicht verwenden oder die Datei f.close()
aufrufen, bleibt die Datei bis zum Ende des Programms geöffnet, oder bis f
als Garbage-Collected erfasst wird.
Müssen Sie das wissen? Oft nicht auf einem Single-User-System mit GBytes, wie der durchschnittliche Desktop-PC. Wahrscheinlich ja, wenn Sie Python-Code schreiben, um als ein Element einer Sammlung von Prozessen auf einem hart gepressten Server ausgeführt zu werden. Der Speicher, den Sie nicht explizit freigeben, kann Speicher sein, den ein anderer Prozess benötigt.
Vielen Dank für diese Antwort, es war genau das, was ich wollte. –
- 1. Wie geht Quartz mit der Texturkomprimierung um?
- 2. Wie geht man mit ZMQ-Sockeln um?
- 3. Wie geht man mit großen Arrays in Python um?
- 4. Wie geht Hibernate mit Blob um?
- 5. Wie geht Gettext mit dynamischen Inhalten um?
- 6. Wie geht Mercurial mit gespaltenen Dateien um?
- 7. Wie geht spark mit ungleicher Knotenleistung um?
- 8. Wie geht JSPM mit CSS-Dateien um?
- 9. Wie geht Akka mit Nachrichtenversionen um?
- 10. Wie geht Facebook mit Textüberlauf um?
- 11. Wie geht Django mit Namenskonflikten um?
- 12. OpenCV - Wie geht es mit Farbprofilen um?
- 13. Wie geht man mit einem erschöpften Iterator um?
- 14. Speicherzuordnung Problem
- 15. OS: Speicherzuordnung
- 16. Wie CUDA konstante Speicherzuordnung funktioniert?
- 17. Wie geht Ihre Lieblingssprache mit tiefer Rekursion um?
- 18. Kann nicht verstehen, wie Spark python bei Yarn laufen ließ? Wie geht der ProcessBuilder mit der Zip-Datei um?
- 19. Mehrsprachige Website, wie geht man damit um?
- 20. Wie geht das mit datetime & getpage in Python?
- 21. Kontrolle der Speicherzuordnung/GC in einer Simulation?
- 22. C++ struct Speicherzuordnung
- 23. UIToolBar - Wie geht man mit Button-Overflow um?
- 24. Wie geht man mit großer Matrix in Dymola um?
- 25. Wie Animation Beschleunigung, wenn es geht um
- 26. Djinni: Wie geht man mit Möchtegern überladenen Methoden um?
- 27. Benutzerdefinierter Fensterbewegungscode. Wie geht man mit schnellen Mausbewegungen um? [WPF]
- 28. Crystal Report - Wie geht man mit leeren Daten um?
- 29. Mehrere Apps mit gemeinsamem Code - wie geht man damit um?
- 30. Wie geht es mit 2D-Array in Python?
[Lesen Sie die Dokumente] (https://docs.python.org/3/c-api/memory.html) – CoryKramer
Die Dokumente sagen, dass der "Python Memory Manager" verwaltet den Speicher, aber die nicht beantworten Frage (oder zumindest nicht in diesem Abschnitt), ob es etwas gibt, über das ein Entwickler nachdenken muss. Ich denke, die wichtigsten Dinge werden darin bestehen, sicherzustellen, dass überflüssige Objekte in der Lage sind, Müll zu sammeln usw. Ich werde die Frage jemandem beantworten, der mehr darüber weiß als ich. – neil
Neil hat Recht, ich hatte die Dokumente gelesen, aber ich war mir nicht sicher, ob ich selbst etwas tun sollte. –