本文介绍使用 Python 实时读取 iperf3 命令输出的方法。

在使用 subprocess.Popen() 方法执行 iperf3 命令时,程序会立即返回,而不会等待子进程完成。因此,使用 for 循环迭代读取管道上的每一行输出并不能实现实时显示。

为了实现实时读取,可以使用 process.communicate() 方法来代替 for 循环。process.communicate() 方法会等待子进程完成,并返回标准输出和标准错误的元组。你可以将标准输出打印出来,实现实时显示每一行输出。

以下是修改后的代码:

import subprocess
import time

def run_iperf_command():
    command = 'iperf3 -c 192.168.124.92 -p 11111 -i 1'
    process = subprocess.Popen(command.split(), stdout=subprocess.PIPE, universal_newlines=True)
    output, _ = process.communicate()
    print(output)

run_iperf_command()

这样,程序会等待子进程完成后,一次性输出所有的行。

Python 实时读取 iperf3 命令输出

原文地址: https://www.cveoy.top/t/topic/qzEX 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录