Documentazione di Python Garbage Collector [chiuso]


132

Sto cercando documenti che descrivano in dettaglio come funziona la raccolta dei rifiuti di Python.

Sono interessato a cosa viene fatto in quale passaggio. Quali sono gli oggetti in queste 3 raccolte? Quali tipi di oggetti vengono eliminati in ogni passaggio? Quale algoritmo viene utilizzato per la ricerca dei cicli di riferimento?

Contesto: sto implementando alcune ricerche che devono terminare in breve tempo. Quando il garbage collector inizia a raccogliere la generazione più vecchia, è "molto" più lento che in altri casi. Ci è voluto più tempo di quanto sia previsto per le ricerche. Sto cercando di prevedere quando raccoglierà le generazioni più vecchie e quanto tempo ci vorrà.

È facile prevedere quando raccoglierà le generazioni più vecchie con get_count()e get_threshold(). Anche questo può essere manipolato set_threshold(). Ma non vedo quanto sia facile decidere è meglio fare collect()con la forza o aspettare la raccolta programmata.

Risposte:


126

Non esiste una risorsa definitiva su come Python esegue la propria garbage collection (oltre al codice sorgente stesso), ma quei 3 collegamenti dovrebbero darti un'idea abbastanza buona.

Aggiornare

La fonte è in realtà piuttosto utile. Quanto ne esci dipende da quanto bene leggi C, ma i commenti sono in realtà molto utili. Passa alla collect()funzione e i commenti spiegano bene il processo (anche se in termini molto tecnici).


3
CPython non utilizza più Subversion. Passarono a Mercurial ospitato su hg.python.org. Dal momento che non riesco a capire come collegare la versione corrente di un file su quel sito, collegherò invece a un mirror GitHub non ufficiale .
Marius Gedminas,

1
Non importa, ho capito come collegarsi all'ultimo gcmodule.c sul sito ufficiale. Trovo ancora più leggibile GitHub.
Marius Gedminas,

imparare molto. Thx
gus,

1
Il primo collegamento non punta a nulla di correlato alla garbage collection di Python. Si prega di aggiornare il collegamento.
Manish Barnwal,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.