2012-06-06 25 views
1

我有一個線程池與執行特定任務的線程。任務完成後,我讓worker的run()方法終止。我應該明確終止過期的線程嗎?

在此之後,我應該顯式殺死與sys.exit()線程?我注意到工作線程仍然保留在後臺,即使在任務完成後。

清除舊線程的建議方法是什麼?

回答

1

執行sys.exit將退出整個應用程序。線程完成執行不需要做任何事情。

有關停止/查殺線索的進一步參考請參閱this question

+0

過期的線程是否自動垃圾收集?我假設,因爲這樣的線程仍然可以返回is_alive(),那麼它存在於內存中。在正常操作中,我的程序永遠不會調用sys.exit() – Goro

+0

只要您有對它的引用,線程對象本身就不會被垃圾收集。但是線程中創建的對象通常會在線程存在之後收集。但在某些情況下,無法收集對象,例如使用循環依賴關係。但這是一個普遍的問題,與線程無關。 – schlamar