Me gustaría ejecutar repetidamente un subproceso lo más rápido posible. Sin embargo, a veces el proceso llevará demasiado tiempo, así que quiero matarlo. utilizo signal.signal (...), como a continuación:¿Matar o terminar el subproceso cuando se agota el tiempo de espera?
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
pero en algún momento este código a tratar de detener la siguiente ronda de la ejecución. Prueba de detención/home/lu/workspace/152/treefit/test2 para tiempo de espera /bin/sh:/home/lu/workspace/153/squib_driver: no encontrado --- esta es la siguiente ejecución; el programa lo detiene incorrectamente.
¿Alguien sabe cómo solucionar esto? Quiero detenerme a tiempo para no ejecutar 1 segundo el tiempo. Sueño (n) a menudo espera n segundos. No quiero que lo quiera. Puede ejecutar menos de 1 segundo
¿Entonces, esencialmente si el subproceso se ejecuta durante más de 1 segundo, desea matarlo y comenzar el siguiente? ¿Es esto correcto? –
¿Cómo se crea su subproceso? porque parece que la expresión __ppid = pipeexe.pid__ está obteniendo el siguiente subproceso que se ejecutará !!! – mouad
Entonces, esencialmente si el subproceso se ejecuta durante más de 1 segundo, ¿quiere matarlo y comenzar el siguiente? ¿Es esto correcto? sí, eso es correcto – user504909