gpt4 book ai didi

python - 获取上传/下载 kbps 速度

转载 作者:太空狗 更新时间:2023-10-30 00:32:10 25 4
gpt4 key购买 nike

我正在使用名为 psutil 的库来获取系统/网络统计信息,但我只能在我的脚本中获取上传/下载的总字节数。

使用 Python 原生获取网络速度的方法是什么?

最佳答案

如果您需要立即知道传输速率,您应该创建一个线程来连续计算。我不是这方面的专家,但我尝试编写一个简单的程序来满足您的需求:

import threading
import time
from collections import deque

import psutil


def calc_ul_dl(rate, dt=3, interface="WiFi"):
t0 = time.time()
counter = psutil.net_io_counters(pernic=True)[interface]
tot = (counter.bytes_sent, counter.bytes_recv)

while True:
last_tot = tot
time.sleep(dt)
counter = psutil.net_io_counters(pernic=True)[interface]
t1 = time.time()
tot = (counter.bytes_sent, counter.bytes_recv)
ul, dl = [
(now - last) / (t1 - t0) / 1000.0
for now, last in zip(tot, last_tot)
]
rate.append((ul, dl))
t0 = time.time()


def print_rate(rate):
try:
print("UL: {0:.0f} kB/s / DL: {1:.0f} kB/s".format(*rate[-1]))
except IndexError:
"UL: - kB/s/ DL: - kB/s"


# Create the ul/dl thread and a deque of length 1 to hold the ul/dl- values
transfer_rate = deque(maxlen=1)
t = threading.Thread(target=calc_ul_dl, args=(transfer_rate,))

# The program will exit if there are only daemonic threads left.
t.daemon = True
t.start()

# The rest of your program, emulated by me using a while True loop
while True:
print_rate(transfer_rate)
time.sleep(5)

在这里,您应该将 dt 参数设置为适合您的任何接缝。我尝试使用 3 秒,这是我在运行在线 speedtest 时的输出:

UL: 2 kB/s / DL: 8 kB/s
UL: 3 kB/s / DL: 45 kB/s
UL: 24 kB/s / DL: 1306 kB/s
UL: 79 kB/s / DL: 4 kB/s
UL: 121 kB/s / DL: 3 kB/s
UL: 116 kB/s / DL: 4 kB/s
UL: 0 kB/s / DL: 0 kB/s

这些值似乎是合理的,因为我的速度测试结果是 DL:1258 kB/sUL:111 kB/s

关于python - 获取上传/下载 kbps 速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21866951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com