Python 实时读取 iperf3 命令输出
本文介绍使用 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()
这样,程序会等待子进程完成后,一次性输出所有的行。
原文地址: https://www.cveoy.top/t/topic/qzEX 著作权归作者所有。请勿转载和采集!