0

我正在使用 parallel-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)

在此先感谢沃尔夫冈

4

1 回答 1

1

您可以使用gc.get_referrers(obj)来找出引用对象的内容。因为您很可能会得到一堆 dicts 作为响应,所以您必须提升几个级别才能理解它。

于 2010-04-15T10:13:38.693 回答