Убить или завершить подпроцесс по истечении времени ожидания?

Я хотел бы как можно быстрее многократно выполнять подпроцесс. Однако иногда процесс занимает слишком много времени, поэтому я хочу его убить. Я использую 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

, но когда-нибудь этот код попытается остановить выполнение следующего раунда. Остановить test / home / lu / workspace / 152 / treefit / test2 для тайм-аута / bin / sh: / home / lu / workspace / 153 / squib_driver: not found --- это следующее выполнение; программа ошибочно останавливает его.

Кто-нибудь знает, как это решить? Я хочу вовремя остановиться, а не выполнить 1 секунду time.sleep (n) часто ждет n секунд. Я не хочу, чтобы он выполнялся менее 1 секунды

17
задан martineau 20 February 2018 в 17:07
поделиться