如何在python中计算每秒ifconfig的数据传输?

时间:2016-09-22 23:07:23

标签: python time ifconfig

我有这样的剧本

import os
import time
os.chdir('/sys/class/net/wlan1/statistics')

while True:
    up = open('tx_bytes').read()
    time.sleep(1)
    print 'UP:',up 

值为

UP: 2177453

UP: 2177539

UP: 2177789

UP: 2177990

如何在延迟时间后找到不同的值TX字节.sleep和Befor延迟时间.sleep获取带宽字节persecond? Byte persecond = TXbytes_after_time_sleep - TXbytes_before_time_sleep 在真实的情况下,价值可以无穷无尽。

2 个答案:

答案 0 :(得分:1)

到目前为止你有什么担心?你有一定的固有开销,因为你必须回到文件的开头。我们可以通过摆脱多余的 open 命令来减少它:

import time
old = 0
with open('/sys/class/net/wlan1/statistics/tx_bytes') as vol:
    while True:
        vol.seek(0)
        new = vol.read()
        time.sleep(1)
        print "UP:", new-old
        old = new

搜索命令重置文件"书签""到字节0,文件的开头。它比重新打开文件更快,因为它只是对象属性的整数赋值。

这种粒度是否足以满足您的目的?

答案 1 :(得分:0)

就像你猜的那样。

这是非常粗糙而且不是很准确,但在阅读之前花在阅读之前的同一时间,所以我想这很好。

with open('/sys/class/net/wlan1/statistics/tx_bytes') as myfile:
    before = myfile.read()
time.sleep(3)  # The longer this is the more accurate it will be on average.
with open('/sys/class/net/wlan1/statistics/tx_bytes') as myfile:
    after = myfile.read()
print((int(after)-int(before))/3)