我的python脚本调用批处理文件,该文件通过命令行启动网络吞吐量测试(ixChariot,如Iperf)。
当我为了测试吞吐量而增加此RF测试中的衰减时,ixChariot开始需要永远,并且不响应初始测试持续时间参数。因此,将整个脚本减速停止(或者我应该说它永远持续下去)
如何在T时间结束后结束ixChariot进程并结束测试,以便我的python脚本不会从Popen挂起?
谢谢你们,这个对我来说很难对付
答案 0 :(得分:1)
您可以尝试围绕流程发出警报
from signal import alarm, signal, SIGALRM, SIGKILL
TIMEOUT=-9
def run_proc_timeout(proc, timeout):
class _Alarm(Exception):
pass
def alarm_handler(signum, frame):
raise _Alarm
# setup alarm for timeout length
signal(SIGALRM, alarm_handler)
alarm(timeout)
try:
stdout, stderr = proc.communicate()
alarm(0)
except _Alarm:
pids = [proc.pid]
# kill proc and all its children
return TIMEOUT, "", ""
return proc.returncode, stdout, stderr