Как ограничить время выполнения программы при использовании подпроцесса?

Я хочу использовать подпроцесс для запуска программы, и мне нужно ограничить время выполнения. Например, я хочу убить его, если он работает более 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()
7
задан Xhacker Liu 10 April 2018 в 08:21
поделиться