Я понимаю, что это может быть дубликат Использование модуля 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")