使用Python测量网络数据

13

我正在编写一个程序,当网络流量在一段时间内(比如半小时)低于一定阈值时,将关闭计算机。

以下是我的伪代码,经过验证可以实现正确的逻辑:

BEGIN SUBPROGRAM
    loopFlag = True
    Wait 5 minutes    # Allows time for boot and for the machine to settle
    traffic = 0
    WHILE loopFlag = True DO
        FOR sec = 0 to 3600
            traffic += *network.traffic()*
            wait 1 second
        ENDFOR
        IF traffic < trafficThreshold THEN
            loopFlag = False
        ENDIF
    ENDWHILE
    os.ShutDown()
END SUBPROGRAM

我需要的是Python模块或库,可使我测量此内容。

虽然我已经对此进行了研究,并且也看过了不同资料,但这些似乎不是我想要的功能,无论它们使用什么语言实现。

有什么想法可以实现这个吗?

1个回答

26

为了检查您系统上的网络流量,我建议您查看psutil

>>> psutil.net_io_counters(pernic=True)
{'lo': iostat(bytes_sent=799953745, bytes_recv=799953745, packets_sent=453698, packets_recv=453698), 
 'eth0': iostat(bytes_sent=734324837, bytes_recv=4163935363, packets_sent=3605828, packets_recv=4096685)}
>>>

如果你使用的是Windows系统,可以查看这篇文章:OS Reboot, Shutdown, Hibernate, Sleep, Wakeup (Windows Python),以关闭你的操作系统。

如果你使用的是Linux/Unix系统,则需要使用subprocess模块发送shutdown/ reboot命令。


我会调查一下。关于关机,我没有遇到问题,所以这个额外加分。如果一切正常,我会标记为正确的。 - nchpmn
这些统计数据是每秒的吗? - travis1097
不,这些是总统计数据。 - aayoubi
7
注意,从 psutil 3.2.2 版本开始(至少如此),该方法的名称为 net_io_counters。 - JP Lodine

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接