我想測量我在 Python 重郵伺服器中實現的頻寬,這意味著我想測量我的伺服器每秒處理多少位元組。所以我計劃如何做到這一點是:在固定的時間段內(例如),我正在測量和300sec
的數量。經過這段時間,我計算出比率:。但是,我不確定這就是我想要的,因為它給了我一個比率(通常約為 1-1.5),所以這意味著我處理在一段時間內收到的所有或幾乎所有訊息,但是我想測量我處理了多少位元組。如果有人可以建議我如何測量我的頻寬,我將非常感激。received bytes
sent bytes
bytes_received / bytes_sent
答案1
我認為你需要做的是:
收到的位元組數= bytes_received300s - bytes_received0s
已發送位元組數= 發送的位元組數300s - 發送的位元組數0s
已處理的總位元組數= 收到的位元組數 - 發送的位元組數
這將為您提供 300 秒期間處理的位元組總數。
答案2
您可以使用 psutil.net_io_counters() 來計算一段時間內的頻寬。您將在 0 秒時拍攝快照,並在 300 秒時拍攝快照。
def get_bandwidth():
# Get net in/out
net1_out = psutil.net_io_counters().bytes_sent
net1_in = psutil.net_io_counters().bytes_recv
time.sleep(300) # Not best way to handle getting a value 300 seconds later
# Get new net in/out
net2_out = psutil.net_io_counters().bytes_sent
net2_in = psutil.net_io_counters().bytes_recv
# Compare and get current speed
if net1_in > net2_in:
current_in = 0
else:
current_in = net2_in - net1_in
if net1_out > net2_out:
current_out = 0
else:
current_out = net2_out - net1_out
network = {"traffic_in": current_in, "traffic_out": current_out}
# Return data in bytes
return network