2016-09-22 8 views
0

Ich habe Skript wie diesesWie berechne ich die Datenübertragung ifconfig pro Sekunde in Python?

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

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

Und der Wert

UP: 2177453 

UP: 2177539 

UP: 2177789 

UP: 2177990 

Wie diferent Wert finden TX nach Verzögerung time.sleep und Befor Verzögerung time.sleep Bytes Bandbreite Byte persecond zu bekommen? Byte persecond = TXbytes_after_time_sleep - TXbytes_before_time_sleep und der Wert kann keine endlosen Schleifen mit wahr sein.

Antwort

0

Genau wie du, denke ich.

Es ist ziemlich rau und nicht sehr genau, aber die gleiche Zeit, die gelesen wird, wird beim Lesen des Nachher berücksichtigt, also denke ich, dass es gut ist.

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) 
1

Was ist Ihre Sorge, so weit? Sie haben eine gewisse Menge an angeborenem Overhead, da Sie zum Anfang der Datei zurückkehren müssen. Wir können es reduzieren etwas von der überflüssigen offen Befehle loszuwerden:

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 

Die suchen Befehl der Datei „Lesezeichen““auf Byte 0 zurücksetzt, den Start der Datei Es ist schneller als die Wiedereröffnung. Datei, da es sich nur um eine ganzzahlige Zuweisung zu einem Objektattribut handelt.

Ist diese Granularität für Ihre Zwecke ausreichend?

Verwandte Themen