2

我的 python 脚本调用一个批处理文件,该文件通过命令行启动网络吞吐量测试(ixChariot,如 Iperf)。

当我在此 RF 测试中增加衰减以测试吞吐量时,ixChariot 开始持续占用并且不响应初始测试持续时间参数。因此,将整个脚本减慢到停止(或者我应该说让它永远持续下去)

如何在时间 T 过后结束 ixChariot 进程并结束测试,以使我的 python 脚本不会从 Popen 挂起?

谢谢大家,这个对我来说太难了

4

1 回答 1

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
于 2013-08-22T19:37:04.377 回答