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
  • 相关阅读:
    php 魔鬼训练
    php 验证码
    php 经典分页(推荐和laypage配合)
    php 过时的sql操作库(学习使用)
    php 上传图片
    npm 国内淘宝镜像cnpm、设置淘宝源
    gulp + webpack + sass 学习
    关于分页的解决方案收集
    SVN的学习和安装
    使用和学习 ES2015
  • 原文地址:https://www.cnblogs.com/chenlove/p/15165065.html
Copyright © 2011-2022 走看看