Documentação do coletor de lixo Python

| | | | | | | | | | |

Estou procurando documentos que descrevam em detalhes como funciona a coleta de lixo python.

Estou interessado no que é feito em qual etapa. Quais objetos estão nessas 3 coleções? Que tipos de objetos são excluídos em cada etapa? Qual algoritmo é usado para encontrar ciclos de referência?

Antecedentes: Estou implementando algumas pesquisas que precisam terminar em pouco tempo. Quando o coletor de lixo começa a coletar a geração mais antiga, é "muito" mais lento do que em outros casos. Levou mais tempo do que o previsto para as pesquisas. Estou procurando como prever quando coletará a geração mais antiga e quanto tempo levará.

É fácil prever quando irá coletar a geração mais antiga com get_count() e get_threshold(). Isso também pode ser manipulado com set_threshold(). Mas não vejo como é fácil decidir se é melhor fazer collect() à força ou esperar pela coleta agendada.