Использование модуля «подпроцесс» с таймаутом
Вот код Python для запуска произвольной команды, возвращающей ееstdout
данные, или вызовите исключение для ненулевых кодов выхода:
proc = subprocess.Popen(
cmd,
stderr=subprocess.STDOUT, # Merge stdout and stderr
stdout=subprocess.PIPE,
shell=True)
communicate
используется для ожидания завершения процесса:
stdoutdata, stderrdata = proc.communicate()
subprocess
модуль не поддерживает тайм-аут - возможность убить процесс, запущенный более чем на X секунд, поэтомуcommunicate
может потребоваться вечность, чтобы бежать.
Чтоsimplest способ реализовать таймауты в программе Python, предназначенной для запуска в Windows и Linux?