тайм-аут подпроцесса

Я понимаю, что это может быть дубликат Использование модуля subprocess с таймаутом . Если это так, прошу прощения, просто хотел кое-что уточнить.

Я создаю подпроцесс, который хочу запустить в течение определенного времени, и если он не завершится за это время, я хочу, чтобы он вывести ошибку. Будет ли работать что-то вроде следующего кода, или мы должны использовать сигнал, подобный ответу в другом вопросе? Заранее спасибо!:

def run(self):
    self.runTestCmd()
    self.waitTestComplete(self.timeout)

def runTestCmd(self):
    self.proc = subprocess.Popen("./configure", shell=True)

def waitTestComplete(self, timeout):
    st = time.time() 
    while (time.time()-st) < timeout:
        if self.proc.poll() == 0:
            return True
        else:
            time.sleep(2)
    raise TestError("timed out waiting for test to complete")

6
задан Community 23 May 2017 в 12:15
поделиться