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

Я хочу использовать подпроцесс для запуска программы, и мне нужно ограничить время выполнения. Например, я хочу убить его, если он длится более 2 секунд.

Для обычных программ kill () работает хорошо. Но если я попытаюсь бежать/usr/bin/time somethingkill () не может действительно убить программу.

Мой код ниже, кажется, не работает хорошо. Программа все еще работает.

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()

Ответы на вопрос(3)

Ваш ответ на вопрос