扔到线程里,优化网速展示

This commit is contained in:
macos 2020-04-07 18:12:11 +08:00
parent 2f7acc3564
commit 518543edb8
2 changed files with 88 additions and 108 deletions

@ -27,7 +27,6 @@ import os
import sys
import json
import subprocess
import collections
import threading
def get_uptime():
@ -80,54 +79,6 @@ def get_cpu():
result = 100-(t[len(t)-1]*100.00/st)
return round(result, 1)
traffic_clock = time.time()
traffic_diff = 0
def TCLOCK(func):
def wrapper(*args, **kwargs):
global traffic_clock, traffic_diff
now_clock = time.time()
traffic_diff = now_clock - traffic_clock
traffic_clock = now_clock
return func(*args, **kwargs)
return wrapper
class Traffic:
def __init__(self):
self.rx = collections.deque(maxlen=10)
self.tx = collections.deque(maxlen=10)
@TCLOCK
def get(self):
f = open('/proc/net/dev', 'r')
net_dev = f.readlines()
f.close()
avgrx = 0; avgtx = 0
for dev in net_dev[2:]:
dev = dev.split(':')
if "lo" in dev[0] or "tun" in dev[0] \
or "docker" in dev[0] or "veth" in dev[0] \
or "br-" in dev[0] or "vmbr" in dev[0] \
or "vnet" in dev[0] or "kube" in dev[0]:
continue
dev = dev[1].split()
avgrx += int(dev[0])
avgtx += int(dev[8])
self.rx.append(avgrx)
self.tx.append(avgtx)
avgrx = 0; avgtx = 0
l = len(self.rx)
for x in range(l - 1):
avgrx += self.rx[x+1] - self.rx[x]
avgtx += self.tx[x+1] - self.tx[x]
avgrx = int(avgrx / l / traffic_diff)
avgtx = int(avgtx / l / traffic_diff)
return avgrx, avgtx
def liuliang():
NET_IN = 0
NET_OUT = 0
@ -199,6 +150,15 @@ pingTime = {
'189': 0,
'10086': 0
}
netSpeed = {
'netrx': 0.0,
'nettx': 0.0,
'clock': 0.0,
'diff': 0.0,
'avgrx': 0,
'avgtx': 0
}
def _ping_thread(host, mark, port):
lostPacket = 0
allPacket = 0
@ -226,9 +186,34 @@ def _ping_thread(host, mark, port):
allPacket = 0
startTime = endTime
time.sleep(1)
time.sleep(INTERVAL)
def get_packetLostRate():
def _net_speed():
while True:
with open("/proc/net/dev", "r") as f:
net_dev = f.readlines()
avgrx = 0
avgtx = 0
for dev in net_dev[2:]:
dev = dev.split(':')
if "lo" in dev[0] or "tun" in dev[0] \
or "docker" in dev[0] or "veth" in dev[0] \
or "br-" in dev[0] or "vmbr" in dev[0] \
or "vnet" in dev[0] or "kube" in dev[0]:
continue
dev = dev[1].split()
avgrx += int(dev[0])
avgtx += int(dev[8])
now_clock = time.time()
netSpeed["diff"] = now_clock - netSpeed["clock"]
netSpeed["clock"] = now_clock
netSpeed["netrx"] = int((avgrx - netSpeed["avgrx"]) / netSpeed["diff"])
netSpeed["nettx"] = int((avgtx - netSpeed["avgtx"]) / netSpeed["diff"])
netSpeed["avgrx"] = avgrx
netSpeed["avgtx"] = avgtx
time.sleep(INTERVAL)
def get_realtime_date():
t1 = threading.Thread(
target=_ping_thread,
kwargs={
@ -253,12 +238,17 @@ def get_packetLostRate():
'port': PORBEPORT
}
)
t4 = threading.Thread(
target=_net_speed,
)
t1.setDaemon(True)
t2.setDaemon(True)
t3.setDaemon(True)
t4.setDaemon(True)
t1.start()
t2.start()
t3.start()
t4.start()
def byte_str(object):
'''
@ -286,7 +276,7 @@ if __name__ == '__main__':
elif 'INTERVAL' in argc:
INTERVAL = int(argc.split('INTERVAL=')[-1])
socket.setdefaulttimeout(30)
get_packetLostRate()
get_realtime_date()
while True:
try:
print("Connecting...")
@ -317,11 +307,8 @@ if __name__ == '__main__':
print(data)
raise socket.error
traffic = Traffic()
traffic.get()
while True:
CPU = get_cpu()
NetRx, NetTx = traffic.get()
NET_IN, NET_OUT = liuliang()
Uptime = get_uptime()
Load_1, Load_5, Load_15 = os.getloadavg()
@ -347,8 +334,8 @@ if __name__ == '__main__':
array['hdd_total'] = HDDTotal
array['hdd_used'] = HDDUsed
array['cpu'] = CPU
array['network_rx'] = NetRx
array['network_tx'] = NetTx
array['network_rx'] = netSpeed.get("netrx")
array['network_tx'] = netSpeed.get("nettx")
array['network_in'] = NET_IN
array['network_out'] = NET_OUT
array['ip_status'] = IP_STATUS

@ -25,7 +25,6 @@ import time
import timeit
import os
import json
import collections
import psutil
import sys
import threading
@ -58,48 +57,6 @@ def get_hdd():
def get_cpu():
return psutil.cpu_percent(interval=INTERVAL)
traffic_clock = time.time()
traffic_diff = 0
def TCLOCK(func):
def wrapper(*args, **kwargs):
global traffic_clock, traffic_diff
now_clock = time.time()
traffic_diff = now_clock - traffic_clock
traffic_clock = now_clock
return func(*args, **kwargs)
return wrapper
class Traffic:
def __init__(self):
self.rx = collections.deque(maxlen=10)
self.tx = collections.deque(maxlen=10)
@TCLOCK
def get(self):
avgrx = 0; avgtx = 0
for name, stats in psutil.net_io_counters(pernic=True).items():
if "lo" in name or "tun" in name \
or "docker" in name or "veth" in name \
or "br-" in name or "vmbr" in name \
or "vnet" in name or "kube" in name:
continue
avgrx += stats.bytes_recv
avgtx += stats.bytes_sent
self.rx.append(avgrx)
self.tx.append(avgtx)
avgrx = 0; avgtx = 0
l = len(self.rx)
for x in range(l - 1):
avgrx += self.rx[x+1] - self.rx[x]
avgtx += self.tx[x+1] - self.tx[x]
avgrx = int(avgrx / l / traffic_diff)
avgtx = int(avgtx / l / traffic_diff)
return avgrx, avgtx
def liuliang():
NET_IN = 0
NET_OUT = 0
@ -172,6 +129,15 @@ pingTime = {
'189': 0,
'10086': 0
}
netSpeed = {
'netrx': 0.0,
'nettx': 0.0,
'clock': 0.0,
'diff': 0.0,
'avgrx': 0,
'avgtx': 0
}
def _ping_thread(host, mark, port):
lostPacket = 0
allPacket = 0
@ -199,9 +165,34 @@ def _ping_thread(host, mark, port):
allPacket = 0
startTime = endTime
time.sleep(1)
time.sleep(INTERVAL)
def get_packetLostRate():
def _net_speed():
while True:
with open("/proc/net/dev", "r") as f:
net_dev = f.readlines()
avgrx = 0
avgtx = 0
for dev in net_dev[2:]:
dev = dev.split(':')
if "lo" in dev[0] or "tun" in dev[0] \
or "docker" in dev[0] or "veth" in dev[0] \
or "br-" in dev[0] or "vmbr" in dev[0] \
or "vnet" in dev[0] or "kube" in dev[0]:
continue
dev = dev[1].split()
avgrx += int(dev[0])
avgtx += int(dev[8])
now_clock = time.time()
netSpeed["diff"] = now_clock - netSpeed["clock"]
netSpeed["clock"] = now_clock
netSpeed["netrx"] = int((avgrx - netSpeed["avgrx"]) / netSpeed["diff"])
netSpeed["nettx"] = int((avgtx - netSpeed["avgtx"]) / netSpeed["diff"])
netSpeed["avgrx"] = avgrx
netSpeed["avgtx"] = avgtx
time.sleep(INTERVAL)
def get_realtime_date():
t1 = threading.Thread(
target=_ping_thread,
kwargs={
@ -226,12 +217,17 @@ def get_packetLostRate():
'port': PORBEPORT
}
)
t4 = threading.Thread(
target=_net_speed,
)
t1.setDaemon(True)
t2.setDaemon(True)
t3.setDaemon(True)
t4.setDaemon(True)
t1.start()
t2.start()
t3.start()
t4.start()
def byte_str(object):
'''
@ -259,7 +255,7 @@ if __name__ == '__main__':
elif 'INTERVAL' in argc:
INTERVAL = int(argc.split('INTERVAL=')[-1])
socket.setdefaulttimeout(30)
get_packetLostRate()
get_realtime_date()
while 1:
try:
print("Connecting...")
@ -290,11 +286,8 @@ if __name__ == '__main__':
print(data)
raise socket.error
traffic = Traffic()
traffic.get()
while 1:
CPU = get_cpu()
NetRx, NetTx = traffic.get()
NET_IN, NET_OUT = liuliang()
Uptime = get_uptime()
Load_1, Load_5, Load_15 = os.getloadavg() if 'linux' in sys.platform else (0.0, 0.0, 0.0)
@ -321,8 +314,8 @@ if __name__ == '__main__':
array['hdd_total'] = HDDTotal
array['hdd_used'] = HDDUsed
array['cpu'] = CPU
array['network_rx'] = NetRx
array['network_tx'] = NetTx
array['network_rx'] = netSpeed.get("netrx")
array['network_tx'] = netSpeed.get("nettx")
array['network_in'] = NET_IN
array['network_out'] = NET_OUT
array['ip_status'] = IP_STATUS