zoukankan      html  css  js  c++  java
  • Python对系统数据进行采集监控——psutil

    大家好,我是辰哥~

    今天给大家介绍一个可以获取当前系统信息的库——psutil

    利用psutil库可以获取系统的一些信息,如cpu,内存等使用率,从而可以查看当前系统的使用情况,实时采集这些信息可以达到实时监控系统的目的。

    psutil库

    psutil的安装很简单

    pip install psutil
    
    

    psutil库可以获取哪些系统信息?

    psutil有哪些作用
    1.内存使用情况
    2.磁盘使用情况
    3.cpu使用率
    4.网络接口发送接收流量
    5.获取当前网速
    6.系统当前进程
    ...
     
    

    下面通过具体代码案例进行演示

    内存使用情况

    import psutil
    #内存
    mem = psutil.virtual_memory()
    # 系统总计内存
    zj = float(mem.total) / 1024 / 1024 / 1024
    # 系统已经使用内存
    ysy = float(mem.used) / 1024 / 1024 / 1024
    # 系统空闲内存
    kx = float(mem.free) / 1024 / 1024 / 1024
    print('系统总计内存:%d.4GB' % zj)
    print('系统已经使用内存:%d.4GB' % ysy)
    print('系统空闲内存:%d.4GB' % kx)
    

    获取当前系统总内存,已使用内存,以及空闲内存

    这里获取的内存是的单位是字节,所以需要通过除以1024转为G,下面同样如此就不再重复解释。

    获取系统cpu信息

    #显示cpu所有逻辑信息
    print(psutil.cpu_times(percpu=True))
    # 查看cpu逻辑个数的信息
    print(u"逻辑CPU个数: %s" % psutil.cpu_count())
    # 查看cpu物理个数的信息
    print(u"物理CPU个数: %s" % psutil.cpu_count(logical=False))
    #CPU的使用率
    cpu = (str(psutil.cpu_percent(1))) + '%'
    print(u"cup使用率: %s" % cpu)
    

    获取cpu信息,以及本机cpu个数(包括逻辑cpu数和物理cpu数),当前的cpu使用率(每隔1秒获取一次,获取查看实时cpu使用率情况)

    系统磁盘使用情况

    part = psutil.disk_partitions()
    for i in part:
        print(i)
    dk = psutil.disk_usage('/')
    print(dk)
    #总磁盘
    total = dk.total / 1024 / 1024 / 1024
    used = dk.used / 1024 / 1024 / 1024
    free = dk.free / 1024 / 1024 / 1024
    print('系统总计磁盘:%d.3GB' % total)
    print('系统已经使用磁盘:%d.3GB' % used)
    print('系统空闲磁盘:%d.3GB' % free)
    print(u"磁盘使用率: %s%%" % dk.percent)
    # 获取磁盘总的io个数,读写信息
    print(psutil.disk_io_counters())
    

    前面几行是当前系统可以访问的磁盘信息

    其中第1行mountpoint='/',表示当前本机默认磁盘

    其中第6行mountpoint='/Volumes/Extreme SSD',表示外接固态移动硬盘

    这里以本机磁盘mountpoint='/'为例,查看磁盘的使用情况(总容量,已使用,空闲容量,使用率)

    最后一行的每一个字段的含义如下:

    """
        read_count 读IO数
        write_count 写IO数
        read_bytes 读IO字节数
        write_bytes 写IO字节数
        read_time 磁盘读时间
        write_time 磁盘写时间
    """
    

    获取系统网卡信息

    # 获取网络总IO信息
    print(psutil.net_io_counters())
    # 发送数据包
    print("发送数据字节:", psutil.net_io_counters().bytes_sent,"bytes")
    #接收数据包
    print("接收数据字节:",psutil.net_io_counters().bytes_recv,"bytes")
    # 输出网络每个接口信息
    net_counter = psutil.net_io_counters(pernic=True)
    for i in net_counter:
        print("网卡:"+i+" ,网卡信息:",net_counter[i])
    

    可以获取到当前本机中存在哪些网卡,以及发送和接收的流量是多少

    通过在终端中查看本机的网卡是否一致

    mac和linux系统命令:ifconfig

    window系统命令:ipconfig

    部分截图如下:

    可以看到程序获取的网卡数据和本机终端获取是一致的

    获取当前网速

    通过上面的程序获取网卡发送和接收的流量来获取当前网速

    s1 = psutil.net_io_counters(pernic=True)['en0']
    time.sleep(1)
    s2 = psutil.net_io_counters(pernic=True)['en0']
    result = s2.bytes_recv - s1.bytes_recv
    print(str('%d' % (result / 1024)) + 'kb/s')
    

    代码中的['en0']表示获取en0网卡的数据,因为辰哥本机的网卡是en0

    最后可以看到获取当前网速情况

    每个1秒执行该代码可以实现实时获取网速

    其他功能

    # 系统开机时间
    # 转换成自然时间格式
    print(datetime.datetime.fromtimestamp(psutil.boot_time ()).strftime("%Y-%m-%d %H: %M: %S"))
    #获取当前系统用户登录信息
    users = psutil.users()
    for i in users:
        print(i)
    

    可以获取到本机开机时间,以及当前使用的用户

    今天的文章就到这里了

    有任何疑问小伙伴们欢迎下方留言讨论哈~

    最后

    1. 本文详细介绍了python通过psutil获取系统信息(内存,磁盘,cpu等)

    2. 本文仅供读者学习使用,不做其他用途!

    耐得住寂寞,才能登得顶
    Gitee码云:https://gitee.com/lyc96/projects
  • 相关阅读:
    HDU 5273 Dylans loves sequence 暴力递推
    HDU 5285 wyh2000 and pupil 判二分图+贪心
    HDU 5281 Senior's Gun 贪心
    HDU 5651 xiaoxin juju needs help 逆元
    HDU 5646 DZY Loves Partition
    HDU 5366 The mook jong
    HDU 5391Z ball in Tina Town 数论
    HDU 5418 Victor and World 允许多次经过的TSP
    HDU 5642 King's Order dp
    抽屉原理
  • 原文地址:https://www.cnblogs.com/chenlove/p/15165065.html
Copyright © 2011-2022 走看看