Python 终止的线程无法重启

6 投票
3 回答
4989 浏览
提问于 2025-04-15 22:38

我有一个线程,它会在某个动作发生时被执行。根据程序的逻辑,这个线程在另一个实例还在运行的时候是不能被启动的。然而,当我第二次调用它时,却出现了“RuntimeError: thread already started”的错误。我还添加了一个检查,使用了Thread.is_alive()函数来查看它是否还活着,结果显示它其实已经结束了。

我到底哪里出错了呢?

如果需要,我可以提供更多细节。

3 个回答

2

你可以试着设置一下

thread._Thread__started = False

这个方法没有官方文档说明,所以使用时要小心哦!:)

7

来自Python文档的内容:

start()这个方法是用来启动线程的活动的。每个线程对象最多只能调用一次这个方法。调用后,它会让这个对象的run()方法在一个单独的线程中运行。

如果你从threading.Thread这个类派生出一个新类,你可以在你的run方法的最后加上Thread.__init__(self),这样你就可以再次调用start,并且在完成后它会自动重新初始化自己。

11

线程是不能重新启动的。如果你想再次启动一个线程,你需要重新创建一个新的线程。

撰写回答