Python - 使用subprocess.Popen启动的进程挂起如何终止

3

我使用以下命令启动了一个子进程:

proc = subprocess.Popen(cmd, stdout=subprocess.PIPE)
output = proc.communicate()[0]

有时候命令cmd会卡住,导致我的Python脚本也在此处卡住。
我想让程序运行一段时间(10秒?),如果没有得到响应,则杀死进程并继续执行我的脚本。 我该如何做到这一点?
2个回答

2
如果您正在使用Python 3,Popen.communicate方法有一个timeout参数:
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE)
output = proc.communicate(timeout=10)[0]

多方便啊。我本应该更仔细地阅读文档。 - jlconlin

1

是的,我可以做到,但我不能等待10秒钟然后选择放弃。我该怎么做? - jlconlin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接