用Python测量网络数据

13 投票
1 回答
23119 浏览
提问于 2025-04-17 10:49

我现在正在写一个程序,目的是在一段时间内(比如半小时)网络流量低于某个阈值时,自动关掉电脑。

这是我写的伪代码,能正确表达这个逻辑:

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模块或库,能够让我测量这个网络流量。

虽然我已经做了一些研究,比如如何测量网络吞吐量,还有监控和限制应用程序的网络流量,以及使用pcapy监控网络流量,但这些似乎都不是我想要的功能,不管它们用什么语言。

有没有什么想法可以实现这个功能呢?

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,可以查看这个链接: 操作系统重启、关机、休眠、唤醒(Windows Python)

如果你用的是 linuxunix,可以使用 subprocess 模块来发送 shutdownreboot 命令。

撰写回答