【问题标题】:How to kill sub process in anytime while closing it in orderly fashion如何在有序关闭子进程的同时随时杀死子进程
【发布时间】:2017-07-31 18:05:03
【问题描述】:

我有一个运行多个测试文件的 GUI。 所有的测试都是python文件,GUI使用从线程运行的子进程一一运行。

在 GUI 中,用户可以停止运行测试的机器。 我已经发现了如何为此目的杀死一个子进程及其工作原理。 见Killing sub process that run inside a thread

现在,我有另一个问题。 测试打开了很多我必须有序关闭的实例。 当我使用 kill() 方法时,所有实例都没有关闭,我无法运行进一步的测试。 即在用户停止之前我在测试中使用的 COM 端口仍然被占用,并阻止我运行更多测试。

解决这个问题的唯一方法是关闭 GUI 并重新开始。

简而言之,我需要一种随时终止子进程的方法,但仍然关闭所有实例,如 sys.exit() 将执行或与关闭他的 GUI 具有相同的效果。 我尝试使用 wait(timeout) 但除非我使用错误,否则它不会成功。

我可以在测试中使用某种中断来调用测试中的某些方法,从而有序地关闭它吗?

【问题讨论】:

    标签: python python-3.x subprocess


    【解决方案1】:

    您应该能够使用this solution 之类的东西来识别和终止应用程序启动的子进程以运行测试。此解决方案似乎特别适合您杀死所有后台进程以允许您的应用程序运行更多测试的用例。

    或者,您可以为您的测试创建一个try-except 包装器或装饰器,以便在应用程序发送某个信号时杀死它们,但这需要应用程序跟踪所有启动的子进程如果测试在后台启动其他子进程,则可能无法正确终止所有进程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-08
      • 2021-11-21
      • 1970-01-01
      • 1970-01-01
      • 2013-08-19
      • 1970-01-01
      • 2013-09-19
      • 2019-12-09
      相关资源
      最近更新 更多