объект не умрет (все еще ссылки на него, что я не могу найти)
-
27-09-2019 - |
Вопрос
Я использую Parallel-Python и запустите новый сервер рабочих мест в функции. После завершения функций он все еще существует, хотя я не вернул его из функции (я использовал Sailref, чтобы проверить это). Я думаю, что есть еще некоторые ссылки на этот объект где-то. Мои две теории: он начинает темы, и он регистрирует корневой регистратор.
Мои вопросы: могу ли я как-то найти, в каком пространстве имен все еще есть ссылка на этот объект. У меня есть ссылка на слабые. Кто-нибудь знает, как отсоединить регистратор? Какие у людей есть другие отладочные предложения?
Вот мой тестовый код:
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)
Спасибо заранее Вольфганг
Решение
Вы можете использовать gc.get_referrers(obj)
Чтобы узнать, что ссылается на объект. Потому что вы, скорее всего, получите кучу диктопов в качестве ответа, вам придется подняться на пару уровней, чтобы указать это.