オブジェクトは、(私は見つけることができないということに、まだ参照を)死ぬことはありません

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

質問

私は、並列のpythonを使用し、機能に新しいジョブ・サーバを起動しています。関数が終了した後、それはまだ私が(私はこれをテストするためにweakrefを使用)関数のそれを返さなかったにも関わらず存在します。私は、このオブジェクトのどこかにいくつかの参照がまだだと思います。 私の2つの理論:それは、スレッドを開始し、それがルートロガーに記録します。

私の質問:私は何とかfindoutどの名前空間にも、このオブジェクトへの参照があることができます。私はweakref参照を持っています。誰もがロガーをデタッチする方法を知っていますか?他のデバッグの提案は、人々が持っていますか?

ここに私のtestcodeがあります:

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)を使用することができます。あなたが最も可能性の高い応答としてdictsの束を取得しますので、あなたはそれのいずれかの意味を理解するためにレベルのカップルを登る必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top