我的 python 脚本调用一个批处理文件,该文件通过命令行启动网络吞吐量测试(ixChariot,如 Iperf)。
当我在此 RF 测试中增加衰减以测试吞吐量时,ixChariot 开始持续占用并且不响应初始测试持续时间参数。因此,将整个脚本减慢到停止(或者我应该说让它永远持续下去)
如何在时间 T 过后结束 ixChariot 进程并结束测试,以使我的 python 脚本不会从 Popen 挂起?
谢谢大家,这个对我来说太难了
我的 python 脚本调用一个批处理文件,该文件通过命令行启动网络吞吐量测试(ixChariot,如 Iperf)。
当我在此 RF 测试中增加衰减以测试吞吐量时,ixChariot 开始持续占用并且不响应初始测试持续时间参数。因此,将整个脚本减慢到停止(或者我应该说让它永远持续下去)
如何在时间 T 过后结束 ixChariot 进程并结束测试,以使我的 python 脚本不会从 Popen 挂起?
谢谢大家,这个对我来说太难了
您可以尝试在过程中设置警报
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