![脚本延迟输出和 ping 命令的差异](https://linux22.com/image/160434/%E8%84%9A%E6%9C%AC%E5%BB%B6%E8%BF%9F%E8%BE%93%E5%87%BA%E5%92%8C%20ping%20%E5%91%BD%E4%BB%A4%E7%9A%84%E5%B7%AE%E5%BC%82.png)
我编写了一个 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 的值进行比较。所以,我同时执行了两者(见图)。
但是,正如您所看到的,输出是不同的。在此输出之前,我执行了相同的命令,出现了更奇怪的输出:py_script 表示延迟为 58 毫秒,而 ping 命令表示延迟为 16 毫秒。
造成这种差异的原因是什么?哪个输出最接近现实?