在 python 中杀死一个线程

killing a thread in python

下面是我试图在 python 中实现的代码片段。我正在尝试从其他函数在目标函数上生成一个新线程。这个新线程等待子进程并退出。现在我想在收到请求时终止该线程。这也应该终止它正在执行的相应子进程。

class ABC(object):

    def process_thread(self):
        #call a child process using subprocess.call()

    def main(self):
       t = threading.Thread(target=self.process_thread)
       t.start()

obj = ABC()
obj.main()

我通常让新线程检查全局变量或队列中传递的值,然后当它看到关闭线程的指示器时 运行:

sys.exit()

它强制线程关闭。

添加: 您将在要关闭的线程中使用 sys.exit() 这对线程模块很有用。

线程模块有一个 thread.exit() 调用,但看起来您正在使用线程。

您的实际用例有一个非常简单的解决方案:使用 subprocess.Popen 生成外部进程。然后,从 Python.

监视和控制进程
 p = suprocess.Popen(...)
 #  ... some time later
 p.kill()

这是一种方法。

不需要线程。