我想尽可能快地重复执行一个子进程。但是有时这个进程会运行太久,因此我想杀死它。 我像下面这样使用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
但有时这段代码会试图阻止下一轮执行。 因为超时而停止测试/home/lu/workspace/152/treefit/test2 /bin/sh: /home/lu/workspace/153/squib_driver: 未找到 --- 这是下一次执行;该程序错误地停止了它。
有人知道如何解决吗?我想在规定时间内停止,而不是每秒执行1秒的time.sleep(n)。我不想这样做,我希望它可以少于1秒执行