【问题标题】:How to kill a subprocess called using subprocess.call in python? [duplicate]如何在 python 中杀死使用 subprocess.call 调用的子进程? [复制]
【发布时间】:2016-11-16 13:22:30
【问题描述】:

我正在使用

调用命令
subprocess.call(cmd, shell=True)

命令不会自动终止。怎么杀?

【问题讨论】:

    标签: python


    【解决方案1】:

    我认为您正在寻找的是subprocess.terminate()。如果您使用Popen 而不是call,则它是非阻塞的,您将能够恢复执行。当然,如果你在之后调用terminate,它会在它做任何事情之前终止。 Documentation here

    【讨论】:

      【解决方案2】:

      由于subprocess.call 等待命令完成,因此您无法以编程方式将其杀死。你唯一的办法是通过操作系统特定的命令手动杀死它,比如kill

      如果您想以编程方式终止进程,您需要使用subprocess.Popen 启动该进程,然后使用terminate 启动它。下面是一个例子:

      import time, subprocess
      
      t1 = time.time()
      
      p = subprocess.Popen('sleep 1', shell=True)
      p.terminate()
      p.wait()
      t2 = time.time()
      
      print(t2 - t1)
      

      这个脚本大约需要.002s 来执行(如果没有终止睡眠命令,则大约需要 1 秒)。

      【讨论】:

        猜你喜欢
        • 2013-10-27
        • 2017-03-21
        • 2020-07-14
        • 2010-12-08
        • 2021-07-01
        • 2015-04-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多