Я хотел бы как можно быстрее выполнить подпроцесс. Однако иногда процесс занимает слишком много времени, поэтому я хочу его убить. Я использую signal.signal(...), как показано ниже:
ppid=pipeexe.pid
signal.signal(signal.SIGALRM, stop_handler)
signal.alarm(1)
.....
def stop_handler(signal, frame):
print 'Stop test'+testdir+'for time out'
if(pipeexe.poll()==None and hasattr(signal, "SIGKILL")):
os.kill(ppid, signal.SIGKILL)
return False
но иногда этот код попытается остановить выполнение следующего раунда. Stop test/home/lu/workspace/152/treefit/test2for time out /bin/sh:/home/lu/workspace/153/squib_driver: не найдено --- это следующее исполнение; программа ошибочно останавливает его.
Кто-нибудь знает, как это решить? Я хочу, чтобы вовремя не выполнялся 1 секунда time.sleep(n), часто ждал n секунд. Я не хочу, чтобы он мог выполнить менее 1 секунды