2017-06-07 33 views
0

スレッド内のメモリ内のすべてがメモリからクリアされるようにPythonスレッドを閉じるにはどうしたらいいですか?Pythonスレッドを閉じてメモリリークを防ぐ

for t in threadlist: 
    t.join(5) 

これらのスレッドが最初に作成された引数のリストをループリストに結果を追加しmyfuncで各スレッドに渡す::現在、私は次のように参加するスレッドのリストを持っている

threadlist = [] 
for r in arglist: 
    t = Thread(target=myfunc, args=(r,)) 
    t.daemon = True 
    threadlist.append(t) 

pymplerでメモリ内の内容を見ると、スレッドによって呼び出される関数内のすべてのものが、この実行後にメモリに残ります。私はmyfuncを通常スレッディングなしで呼び出すと、ガベージコレクトする必要があります。削除さ

オブジェクトは、オブジェクト関数内に含まれたコメントで解決

+0

'threadlist'が存在する限り、myfunc内で参照されるすべてのメモリは解放できません。 – stovfl

+0

threadlistはオブジェクト内に 'myobj.threadlist'として含まれています。私は 'del myobj 'というオブジェクトを削除していますが、まだこの問題があります。 – Michael

+0

'del'は_garbage collecting_を保証しません。作成された参照を確認してください。これは返されたオブジェクトでもあります。 – stovfl

答えて

0


オブジェクト機能の外に移動し、通常機能に
を追加すると、削除後にガーベジコレクションが行われるようになりました。
マイケル

関連する問題