我有一个线程在某些操作发生时被执行。鉴于程序的逻辑,线程不可能在其另一个实例仍在运行时启动。然而,当我第二次调用它时,我得到一个“RuntimeError:thread already started”错误。我添加了一个检查,看看它是否真的使用Thread.is_alive()函数,并且它实际上已经死了。
我做错了什么?
我可以根据需要提供更多详细信息。
答案 0 :(得分:11)
无法重新启动线程。您必须重新创建线程才能再次启动它。
答案 1 :(得分:6)
来自Python文档:
start()
启动线程的活动。
每个线程对象最多只能调用一次。它安排在单独的控制线程中调用对象的run()
方法。
如果你从threading.Thread派生一个类,你可以在run方法的末尾添加一个Thread.__init__(self)
,你就可以再次调用start,它会在完成时自动重新初始化。
答案 2 :(得分:2)
您可以尝试设置
thread._Thread__started = False
它没有正式记录,因此请自行承担风险! :)