0

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

私の質問: どうにかして、このオブジェクトへの参照がまだ存在する名前空間を見つけることはできますか? 私は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)オブジェクトを参照しているものを見つけるために使用できます。応答として多数の辞書を取得する可能性が最も高いため、それを理解するには、いくつかのレベルを上げる必要があります。

于 2010-04-15T10:13:38.693 に答える