2010-05-12 124 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,它会在完成时自动重新初始化。