Je voudrais exécuter plusieurs fois un sous-processus le plus rapidement possible. Cependant, parfois le processus prendra trop de temps, donc je veux le tuer. J'utilise signal.signal (...) comme ci-dessous:Tuer ou mettre fin à un sous-processus lorsque le délai d'attente?
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
mais parfois ce code vais essayer d'arrêter le prochain tour de l'exécution. Arrêt test/home/lu/espace de travail/152/treefit/test2pour timeout /bin/sh:/home/lu/espace de travail/153/squib_driver: non trouvé --- ceci est la prochaine exécution; le programme l'arrête à tort.
Est-ce que quelqu'un sait comment résoudre ce problème? Je veux arrêter dans le temps ne pas exécuter 1 seconde le temps.sleep (n) attend souvent n secondes. Je ne veux pas que je le souhaite peut s'exécuter moins de 1 seconde
Donc essentiellement si le sous-processus s'exécute sur 1 seconde, vous voulez le tuer et commencer le suivant? Est-ce correct? –
Comment créez-vous votre sous-processus? parce qu'il ressemble à l'expression __ppid = pipeexe.pid__ obtient le prochain sous-processus qui sera exécuté !!! – mouad
Donc essentiellement si le sous-processus s'exécute sur 1 seconde, vous voulez le tuer et commencer le suivant? Est-ce correct? oui, c'est vrai – user504909