Objeto não morre (ainda referências a ele que não consigo encontrar)
-
27-09-2019 - |
Pergunta
Estou usando o paralelo-python e inicio um novo servidor de emprego em uma função. Depois que as funções terminarem, ele ainda existe, embora eu não a devolva da função (usei o fracarf para testar isso). Eu acho que ainda há algumas referências a esse objeto em algum lugar. Minhas duas teorias: ele inicia threads e logs para root logger.
Minhas perguntas: De alguma forma, posso encontrar o nome de nome que ainda existe uma referência a esse objeto. Eu tenho a referência fraca. Alguém sabe como destacar um madeireiro? Que outras sugestões de depuração as pessoas têm?
Aqui está o meu teste de teste:
def pptester():
js=pp.Server(ppservers=nodes)
js.set_ncpus(0)
fh=file('tmp.tmp.tmp','w')
tmp=[]
for i in range(200):
tmp.append(js.submit(ppworktest,(),(),('os','subprocess')))
js.print_stats()
return weakref.ref(js)
Obrigado antecipadamente Wolfgang
Solução
Você pode usar gc.get_referrers(obj)
Para descobrir o que está referenciando o objeto. Como você provavelmente terá um monte de ditos como resposta, precisará subir alguns níveis para entender isso.