Это могло быть связано с https://bugs.launchpad.net/ubuntu / + источник/сторожевой таймер / + ошибка/1010855 или https://bugzilla.kernel.org/show_bug.cgi? id=42981
В моей системе, перезагружая работы вокруг проблемы, но это возвращается после нескольких часов.
Модуль подпроцесс
будет вашим другом. Запустите процесс, чтобы получить объект Popen
, затем передайте его такой функции. Обратите внимание, что это вызывает исключение только по таймауту. При желании вы можете перехватить исключение и вызвать метод kill ()
в процессе Popen
. (kill - новая функция в Python 2.6, кстати)
import time
def wait_timeout(proc, seconds):
"""Wait for a process to finish, or raise exception after timeout"""
start = time.time()
end = start + seconds
interval = min(seconds / 1000.0, .25)
while True:
result = proc.poll()
if result is not None:
return result
if time.time() >= end:
raise RuntimeError("Process timed out")
time.sleep(interval)