Здесь код 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
может занять много времени.
Что такое самый простой способ реализовать тайм-ауты в программе Python, предназначенной для работы в Windows и Linux?