Wie werden Variablen und Speicher in Python verwaltet?
Automatisch! Nein, wirklich, Sie erstellen einfach ein Objekt und die Python Virtual Machine verwaltet den benötigten Speicher und wo er im Speicherlayout platziert werden soll.
Hat es einen Stapel und einen Heap und welcher Algorithmus wird zum Verwalten des Speichers verwendet?
Wenn wir darüber sprechen CPython
, wird ein privater Heap zum Speichern von Objekten verwendet. Aus der CPython C-API-Dokumentation :
Die Speicherverwaltung in Python umfasst einen privaten Heap, der alle Python-Objekte und Datenstrukturen enthält. Die Verwaltung dieses privaten Heaps wird intern vom Python-Speichermanager sichergestellt. Der Python-Speichermanager verfügt über verschiedene Komponenten, die sich mit verschiedenen Aspekten der dynamischen Speicherverwaltung befassen, z. B. Freigabe, Segmentierung, Vorbelegung oder Zwischenspeicherung.
Die Speicherrückgewinnung erfolgt meist durch Referenzzählung . Das heißt, die Python-VM führt ein internes Journal darüber, wie viele Referenzen auf ein Objekt verweisen, und sammelt es automatisch durch Müll, wenn keine Referenzen mehr darauf verweisen. Darüber hinaus gibt es einen Mechanismus zum Aufbrechen von Zirkelreferenzen (mit denen die Referenzzählung nicht umgehen kann), indem nicht erreichbare "Inseln" von Objekten erkannt werden, etwas im Gegensatz zu herkömmlichen GC-Algorithmen , die versuchen, alle erreichbaren Objekte zu finden.
HINWEIS: Bitte beachten Sie, dass diese InformationenCPython
spezifisch sind. Andere PythonImplementierungen, wiepypy
,iron python
,jython
und andere können voneinander und von CPython unterscheidenwenn es um deren Umsetzung Besonderheiten kommt. Um dies besser zu verstehen, kann es hilfreich sein zu verstehen, dass es einen Unterschied zwischen Python, der Semantik (der Sprache) und der zugrunde liegenden Implementierung gibt
Gibt es angesichts dieses Wissens Empfehlungen zur Speicherverwaltung für die Verarbeitung großer Zahlen / Daten?
Jetzt kann ich nicht darüber sprechen, aber ich bin mir sicher, dass NumPy (die beliebteste Python-Bibliothek für das Knacken von Zahlen) über Mechanismen verfügt, die den Speicherverbrauch angemessen handhaben.
Wenn Sie mehr über Pythons Interna erfahren möchten, sehen Sie sich diese Ressourcen an: