объект не умрет (все еще ссылки на него, что я не могу найти)

StackOverflow https://stackoverflow.com/questions/2644103

Вопрос

Я использую 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) Чтобы узнать, что ссылается на объект. Потому что вы, скорее всего, получите кучу диктопов в качестве ответа, вам придется подняться на пару уровней, чтобы указать это.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top