2010-05-12 39 views
6

我有一個線程在發生某些操作時被執行。鑑於程序的邏輯,線程不可能在另一個實例仍在運行的時候啓動。但是當我第二次調用它時,出現「RuntimeError:線程已經啓動」的錯誤。我使用Thread.is_alive()函數添加了一個檢查來確定它是否確實存在,並且它實際上是死的。Python終止線程無法重新啓動

我在做什麼錯?

我可以根據需要提供更多細節。

回答

11

線程無法重新啓動。您必須重新創建線程才能重新啓動它。

2

你可以嘗試設置

thread._Thread__started = False 

它不是正式文件,所以用它在你自己的風險! :)

+0

我已經在使用_Thread__stop()來啓動它...添加一個似乎並不那麼糟糕,但卻使我的程序變得非常黑客... – bfrguci 2016-08-07 04:31:43

6

Python文檔: start() 開始線程的活動。 每個線程對象最多隻能調用一次。它安排在一個單獨的控制線程中調用對象的run()方法。

如果你從threading.Thread派生一個類,你可以在run方法的末尾添加一個Thread.__init__(self),你可以再次調用start,它會在完成時自動重新初始化。