【问题标题】:Current incoming MBPS in python [closed]python中当前传入的MBPS [关闭]
【发布时间】:2021-09-16 08:07:44
【问题描述】:

对于我的一个项目,我需要在用 python 编码的 linux 上检测当前传入的每秒兆字节数。

我发现别人的代码做正确的事情,但它是用 java 编码的,我不完全理解它。有什么指点吗?

TOTAL_INCOMING_BYTES_FILE = "/sys/class/net/%s/statistics/rx_bytes",

final double current_mbps =
                    ((current_total_bytes - Long.parseLong(Files.readAllLines(Paths.get(new File(String.format(TOTAL_INCOMING_BYTES_FILE, ETH_INTERFACE)).toURI())).get(0))) / 125000) * (-1);

【问题讨论】:

    标签: java python linux networking


    【解决方案1】:

    我发现别人的代码做正确的事情,但它是用 java 编码的,我不完全理解它。

    确实,Long.parseLong(Files.readAllLines(Paths.get(new File(String.format(TOTAL_INCOMING_BYTES_FILE, ETH_INTERFACE)).toURI())).get(0)) 是从文件中读取数字的一种非常复杂的方法,并且为了更深奥一点,差的分数乘以 -1,而不是交换减数和被减数。
    如果 current_total_bytes 已在八分之一秒前被获取(因为 125000 是一百万的八分之一),则表达式使用常数 125000 计算 current_mbps。代码中缺少current_total_bytes 的(重新)初始化。
    这是一个用于计算 e 的 Python sn-p。 G。 eth0率:

    import time
    earlier_total_bytes = None
    while 0 <= (current_total_bytes := int(open("/sys/class/net/eth0/statistics/rx_bytes").read())) \
      and earlier_total_bytes is None: earlier_total_bytes = current_total_bytes; time.sleep(.125)
    current_mbps = (current_total_bytes - earlier_total_bytes) / 125000
    

    当然,这可以适应其他采样间隔,也可以重复和可变。

    【讨论】:

      猜你喜欢
      • 2013-03-29
      • 1970-01-01
      • 2012-08-06
      • 1970-01-01
      • 1970-01-01
      • 2010-12-25
      • 1970-01-01
      • 1970-01-01
      • 2015-11-10
      相关资源
      最近更新 更多