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