【问题标题】:killing a thread in python [duplicate]在python中杀死一个线程[重复]
【发布时间】:2015-08-28 13:56:34
【问题描述】:

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

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()

【问题讨论】:

  • 看看this。也许一个普通的线程不是你想要的
  • +1。没有杀死线程这样的事情(至少不安全)。线程应始终自行退出。而且大多数时候线程不是答案。

标签: python multithreading python-2.7 subprocess


【解决方案1】:

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

 p = suprocess.Popen(...)
 #  ... some time later
 p.kill()

这将是一种方法。

不需要线程。

【讨论】:

    【解决方案2】:

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

    sys.exit()
    

    它强制线程关闭。

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

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

    【讨论】:

      猜你喜欢
      • 2012-07-11
      • 2022-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-16
      • 2011-04-19
      • 1970-01-01
      相关资源
      最近更新 更多