1

我有一个调用线程对象的主页,该对象正在进行一些测量,但有时如果出现问题,我希望主页停止线程。

我正在做这样的事情有没有办法在 Python 中杀死一个线程?

但这篇文章说

线程应定期检查停止标志。

有没有聪明的方法来做到这一点?

我的代码正在进行一些设置,然后对于它必须测量的每个位置都有一个循环,并且在该循环中,每次它必须测量每个位置时都有另一个循环。

我一直在做这样的事情:

def run(self):
    if EXIT is False:
       SETUP
       for place in places:
           if EXIT is False:
               for measurement in measurements:
                   if EXIT is False:
                       measure()
                   else:
                       break
           else:
               self.stop()
    else:
       self.stop()

这只是代码示例,我想要一种更漂亮的方式来检查退出请求,而不是使用所有的 if 语句

谢谢

4

1 回答 1

1

仅在最里面的循环中检查还不够吗?然后您可以抛出异常而不是检查所有上层的标志。您甚至可以将这一切包装在一个函数中:

def check_thread_exit():
    if EXIT:
        thread.exit()

线程.exit()

引发 SystemExit 异常。当没有被捕获时,这将导致线程静默退出。

然后你的代码将简单地变成

def run(self):
    # an optional try-except block to do cleanup at top level
    try:
        SETUP
        for place in places:
            for measurement in measurements:
                check_thread_exit()
                measure()
    except SystemExit:
        CLEANUP
        raise`
于 2013-08-14T15:54:20.460 回答