Выполните процесс и уничтожьте его, если он не заканчивается в течение одного часа

Это могло быть связано с https://bugs.launchpad.net/ubuntu / + источник/сторожевой таймер / + ошибка/1010855 или https://bugzilla.kernel.org/show_bug.cgi? id=42981

В моей системе, перезагружая работы вокруг проблемы, но это возвращается после нескольких часов.

21
задан codeforester 30 March 2018 в 20:27
поделиться

1 ответ

Модуль подпроцесс будет вашим другом. Запустите процесс, чтобы получить объект 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)
28
ответ дан 29 November 2019 в 20:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: