脚本延迟输出和 ping 命令的差异

脚本延迟输出和 ping 命令的差异

我编写了一个 python 脚本,该脚本执行 1 ping 到 8.8.8.8 并将延迟输出打印到控制台(输出“py_script:...”)。每次打印后,进程会休眠 1 秒。

我一次只执行 1 次 ping,因为我只想要更新的信息(否则连续输出的最后一行 - ping 8.8.8.8)。代码如下:

import re
from time import sleep

try:
    print("ping -c 1 8.8.8.8")
    while(True):
        out = subprocess.check_output(['ping','-c',' 1','8.8.8.8']).decode('utf-8')
        x = re.search("time=(.*)ms",out)
        print("py_script: " + x.group(1) + "ms")
        sleep(1)
except subprocess.CalledProcessError as grepexc:
    if (grepexc.returncode == 1):
        print("E: destination host unreachable: code", grepexc.returncode)
    else:
        print("E: name or service unknown: code", grepexc.returncode)

我想将脚本的输出值与连续 ping 到 8.8.8.8 的值进行比较。所以,我同时执行了两者(见图)。 子进程和 ping 输出

但是,正如您所看到的,输出是不同的。在此输出之前,我执行了相同的命令,出现了更奇怪的输出:py_script 表示延迟为 58 毫秒,而 ping 命令表示延迟为 16 毫秒。

造成这种差异的原因是什么?哪个输出最接近现实?

相关内容