Я хочу использовать подпроцесс для запуска программы, и мне нужно ограничить время выполнения. Например, я хочу убить его, если он работает более 2 секунд.
Для обычных программ хорошо работает kill (). Но если я попытаюсь запустить / usr / bin / time something
, kill () не сможет действительно убить программу.
Мой код ниже, похоже, не работает. Программа все еще работает.
import subprocess
import time
exec_proc = subprocess.Popen("/usr/bin/time -f \"%e\\n%M\" ./son > /dev/null", stdout = subprocess.PIPE, stderr = subprocess.STDOUT, shell = True)
max_time = 1
cur_time = 0.0
return_code = 0
while cur_time <= max_time:
if exec_proc.poll() != None:
return_code = exec_proc.poll()
break
time.sleep(0.1)
cur_time += 0.1
if cur_time > max_time:
exec_proc.kill()