Führt Python eine Analyse durch, um Speicher früher freizugeben? Zum Beispiel, wenn ich habe:Wann werden Daten freigegeben?
d = some big array
# ... use(d) ...
# no d is used from here
# a lot of other code, the code could use more big arrays
Wann entscheidet Python den Speicher von d
verwendet löschen? Wenn ich d
in einer Funktion verwende, wird d
freigegeben, wenn die Funktion ausgeführt wird?
Vielleicht ist das im Allgemeinen schwierig, weil d
anderen zugewiesen werden kann und sie können weiter d
verwenden, nachdem die Funktion beendet ist.
aber ich war auf der Suche nach ein paar gute Praxis, die Python weniger Speicher halten kann ...
Verwenden Sie 'del d', wenn Sie' d' nicht mehr verwenden. – nsilent22
@ nsilent22 Es wird nur der Name "d" dereferenziert, aber das Array wird nicht aus dem Speicher gelöscht (außer es war die einzige Referenz). –
Wie viele andere Sprachen verwendet Python einen Garbage Collector. Aber die Details der Speicherbereinigung sind Implementierung definiert. Die meisten Implementierungen, von denen ich weiß, dass sie Referenzzählen verwenden, wie @ nsilent22 erwähnt, können mit 'del' Verweise auf Objekte entfernen, wodurch sie für eine GC'd qualifiziert sind. – 0x5453