代码之家  ›  专栏  ›  技术社区  ›  Wolfgang Kerzendorf

对象不会死(仍然引用我找不到的对象)

  •  0
  • Wolfgang Kerzendorf  · 技术社区  · 15 年前

    我正在使用并行Python,并在函数中启动一个新的作业服务器。函数结束后,它仍然存在,即使我没有将其从函数中返回(我使用weakref来测试这个)。我想在某个地方还有一些对这个物体的引用。 我的两个理论:它启动线程,并记录到根日志记录器。

    我的问题是:我能否找到在哪个名称空间中仍然存在对这个对象的引用?我有韦克里夫的参考资料。有人知道如何分离记录器吗?人们还有什么其他的调试建议?

    这是我的测试代码:

    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)
    

    提前谢谢 沃尔夫冈

    1 回复  |  直到 15 年前
        1
  •  1
  •   Ants Aasma    15 年前

    你可以使用 gc.get_referrers(obj) 以找出引用对象的内容。因为你很可能会得到一堆听写作为回应,你必须提高两个级别才能理解它。