如何检查由模块线程(Python 3 _thread)创建的线程是否正在运行?

1 投票
1 回答
743 浏览
提问于 2025-04-17 23:32

不过,线程模块对我来说是有效的。怎么检查由线程模块(在Python 3中是 _thread)创建的线程是否在运行呢?当线程正在执行的函数结束时,线程也会结束吗?

def __init__(self):
    self.thread =None
......
if self.thread==None or not self.thread.isAlive() :
        self.thread = thread.start_new_thread(self.dosomething,())
else:
        tkMessageBox.showwarning("XXXX","There's no need to have more than two threads")

我知道“thread”模块里没有叫做 isAlive() 的函数,那有没有其他的替代方法呢?

但是使用“threading”模块也没有什么理由,对吧?

1 个回答

0

除非你真的需要使用内部的 thread(也就是 _thread 模块)提供的低级功能,否则你应该使用 threading 模块。这个模块使用起来简单很多,还提供了一些实用的工具,比如 is_alive

顺便说一下,像你示例代码中那样重启线程的另一种方法是让线程一直运行,但让它等待更多的任务。例如,你可以在某个地方设置一个队列,用来记录所有你希望线程执行的任务。线程会一直处理这些任务,直到队列为空——然后它不会结束,而是会继续等待新的任务出现。只有在应用程序结束时,你才会通知线程停止等待并结束它。

撰写回答