我有一個線程在發生某些操作時被執行。鑑於程序的邏輯,線程不可能在另一個實例仍在運行的時候啓動。但是當我第二次調用它時,出現「RuntimeError:線程已經啓動」的錯誤。我使用Thread.is_alive()函數添加了一個檢查來確定它是否確實存在,並且它實際上是死的。Python終止線程無法重新啓動
我在做什麼錯?
我可以根據需要提供更多細節。
我有一個線程在發生某些操作時被執行。鑑於程序的邏輯,線程不可能在另一個實例仍在運行的時候啓動。但是當我第二次調用它時,出現「RuntimeError:線程已經啓動」的錯誤。我使用Thread.is_alive()函數添加了一個檢查來確定它是否確實存在,並且它實際上是死的。Python終止線程無法重新啓動
我在做什麼錯?
我可以根據需要提供更多細節。
線程無法重新啓動。您必須重新創建線程才能重新啓動它。
你可以嘗試設置
thread._Thread__started = False
它不是正式文件,所以用它在你自己的風險! :)
從Python文檔: start()
開始線程的活動。 每個線程對象最多隻能調用一次。它安排在一個單獨的控制線程中調用對象的run()
方法。
如果你從threading.Thread派生一個類,你可以在run方法的末尾添加一個Thread.__init__(self)
,你可以再次調用start,它會在完成時自動重新初始化。
我已經在使用_Thread__stop()來啓動它...添加一個似乎並不那麼糟糕,但卻使我的程序變得非常黑客... – bfrguci 2016-08-07 04:31:43