Python:如何在超时后终止命令

时间:2018-08-15 12:37:29

标签: python

我正在使用python命令

import commands
tmp = "my command" #any command like ls
status, output = commands.getstatusoutput(tmp)

它完美地工作。现在,我有几个命令可能需要5秒钟以上的时间或永远卡住。我想在5秒钟后杀死此类命令。 任何指针。

2 个答案:

答案 0 :(得分:1)

您可以使用subprocess模块(不推荐使用commands)。

import shlex, subprocess, time
command = "command"
args = shlex.split(command)
p = subprocess.Popen(args)

start_time = time.time()
while time.time() - start_time < timeout:
    time.sleep(0.1)
    if p.poll() is not None:
        break

if p.returncode is not None:
    p.kill()

答案 1 :(得分:0)

我想出了最简单的解决方案:

from easyprocess import EasyProcess
tmp = "my command" #any command like ls
s = EasyProcess(tmp).call(timeout=5)
print "return_code: ",s.return_code
print "output: ", s.stdout