Ho centinaia di matrici veramente grandi, tipo (600, 800) o (3, 600, 800) di forma.Imposta l'array numpy su Nessuna memoria libera?
Pertanto, desidero deselezionare la memoria utilizzata non appena non ho più bisogno di qualcosa.
ho pensato:
some_matrix = None
dovrebbe fare il lavoro, o è solo il riferimento impostato su Nessuno, ma da qualche parte in memoria lo spazio ancora assegnato? (come preservare lo spazio allocato per una nuova inizializzazione di some_matrix
in futuro)
Inoltre: a volte sto tagliando le matrici, calcolato qualcosa e collocato i valori in un buffer (una lista, perché viene aggiunta a tutti tempo). Quindi, impostare una lista su Nessuno sicuramente libererà la memoria, giusto?
Oppure esiste un qualche tipo di metodo unset()
in cui gli identificatori completi più i relativi oggetti di riferimento sono "cancellati"?
Grazie per il chiarimento di funzioni/metodi. Ho già dato per scontato che le variabili locali vengano gettate via dopo l'istruzione return (come in Java o in altri linguaggi) ma è bello sapere che Python fa esattamente la stessa identica cosa lì. Tuttavia, 'del some_array' o generalmente' del some_variable' dovrebbe sempre essere la prima scelta per liberare esplicitamente memoria ?! – daniel451
'' del'' cancella il nome della variabile, quindi qualsiasi operazione successiva inclusa la variabile cancellata genererà un errore. '' a = None'' d'altra parte mantiene la variabile '' a'' così "potreste" accidentalmente usarlo successivamente e non rendersi conto che in realtà è "cancellato". – MSeifert
Ok, grazie. Tuttavia, il secondo scenario non libererà nulla con 'del', anche tu ?! Quindi, 'del' sta eliminando l'identificatore più il suo riferimento, ma l'oggetto dietro il riferimento è appena cancellato quando nessun altro identificatore lo sta riferendo più, giusto? Quindi, finché qualsiasi altro identificatore fa riferimento all'oggetto, come 'b' nell'esempio, il garbage collector non cancellerà l'oggetto ?! – daniel451