我正在使用以下命令调用:
subprocess.call(cmd, shell=True)
该命令不会自动终止。如何结束它?
我正在使用以下命令调用:
subprocess.call(cmd, shell=True)
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)
这个脚本执行需要大约.002秒
的时间(如果sleep命令没有被终止,需要大约1秒)。
我认为你需要的是subprocess.terminate()
。如果你使用Popen
而不是call
,它将是非阻塞的,你将能够恢复执行。当然,如果你立即调用terminate
,它将在执行任何操作之前终止。
文档在这里