Python终止线程无法重启

时间:2010-05-12 20:52:00

标签: python multithreading runtime-error

我有一个线程在某些操作发生时被执行。鉴于程序的逻辑,线程不可能在其另一个实例仍在运行时启动。然而,当我第二次调用它时,我得到一个“RuntimeError:thread already started”错误。我添加了一个检查,看看它是否真的使用Thread.is_alive()函数,并且它实际上已经死了。

我做错了什么?

我可以根据需要提供更多详细信息。

3 个答案:

答案 0 :(得分:11)

无法重新启动线程。您必须重新创建线程才能再次启动它。

答案 1 :(得分:6)

来自Python文档: start() 启动线程的活动。 每个线程对象最多只能调用一次。它安排在单独的控制线程中调用对象的run()方法。

如果你从threading.Thread派生一个类,你可以在run方法的末尾添加一个Thread.__init__(self),你就可以再次调用start,它会在完成时自动重新初始化。

答案 2 :(得分:2)

您可以尝试设置

thread._Thread__started = False

它没有正式记录,因此请自行承担风险! :)