【Python】psutil系统信息获取

参考官方文档:

一、psutil简介

psutil是一个开源且跨平台(http://code.google.com/p/psutil/)的库,能够轻松实现获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息。它主要应用于系统监控,分析和限制系统资源及进程的管理。它实现了同等命令行工具提供的功能,如ps、top、lsof、netstat、ifconfig、who、df、kill、free、nice、ionice、iostat、iotop、uptime、pidof、tty、taskset、pmap等。

在Python中获取系统信息的另一个好办法是使用psutil这个第三方模块。还可以跨平台使用,支持Linux/UNIX/OSX/Windows等,是系统管理员和运维小伙伴不可或缺的必备模块。

Works with Python versions from 2.4 to 3.X.

二、安装psutil模块

pip3 install psutil
​

三、使用psutil模块

1.获取CPU信息:

1.1 使用psutil.cpu_times()方法

  • 使用psutil.cpu_times()获取CPU的完整信息

>>> import psutil
>>> psutil.cpu_times()
scputimes(user=733.23, nice=2.62, system=122.87, idle=19414.35, iowait=29.46, irq=0.0, softirq=34.18, steal=0.0, guest=0.0, guest_nice=0.0)
  • 获取单个数据,如用户的cpu时或io等待时间。

>>> psutil.cpu_times().user
793.19
>>> psutil.cpu_times().iowait
31.79

1.2 psutil.cpu_count()获取CPU个数

  • 使用psutil.cpu_count()获取CPU逻辑个数
#cpu_count(,[logical]):默认返回逻辑CPU的个数,当设置logical的参数为False时,返回物理CPU的个数。
​
>>> psutil.cpu_count()
8
  • 使用psutil.cpu_count(logical=False)获取CPU的物理个数默认logical值为True
>>> psutil.cpu_count(logical=False)
8

1.3 psutil.getloadavg()获取平均系统负载

  • 使用psutil.getloadavg()可以获取平均系统负载,会以元组的形式返回最近1、5和15分钟内的平均系统负载。

在Windows上,这是通过使用Windows API模拟的,该API产生一个线程,该线程保持在后台运行,并每5秒更新一次结果,从而模仿UNIX行为。 因此,在Windows上,第一次调用此方法,在接下来的5秒钟内,它将返回无意义的(0.0,0.0,0.0)元组。
​
>>> psutil.getloadavg()
(1.22, 1.41, 1.38)

1.4 psutil.cpu_percent()获取CPU使用率

  • cpu_percent(,[percpu],[interval]):返回CPU的利用率

    • interval:指定的是计算cpu使用率的时间间隔,interval不为0时,则阻塞时显示interval执行的时间内的平均利用率

    • percpu:指定是选择总的使用率或者每个cpu的使用率,percpuTrue时显示所有物理核心的利用率

1.指定的是计算cpu使用率的时间间隔
>>> for x in range(10):
...     psutil.cpu_percent(interval=1)
... 
2.4
2.5
2.7
2.3
2.5
2.2
2.0
2.2
2.4
2.2
​
2.实现类似top命令的CPU使用率,每秒刷新一次,累计10次:
>>> for x in range(10):
...     psutil.cpu_percent(interval=1,percpu=True)
... 
[1.0, 3.1, 5.0, 4.0, 0.0, 4.0, 3.0, 2.0]
...
[1.0, 1.0, 6.1, 3.1, 2.0, 2.1, 0.0, 0.0]
[2.0, 1.0, 6.0, 4.9, 1.0, 5.1, 1.0, 1.0]
​

1.5 psutil.cpu_stats()获取CPU的统计信息

  • cpu_stats()以命名元组的形式返回CPU的统计信息,包括上下文切换,中断,软中断和系统调用次数。

    >>> psutil.cpu_stats()
    scpustats(ctx_switches=3928927, interrupts=2319133, soft_interrupts=1974116, syscalls=0)

1.6 psutil.cpu_freq()获取CPU频率

  • cpu_freq([percpu]):返回cpu频率

>>> psutil.cpu_freq()
scpufreq(current=1799.999, min=0.0, max=0.0)

1.7 psutil.cpu_times_percent()获取耗时比例

  • cpu_times_percent(,[percpu]):功能和cpu_times大致相同,看字面意思就能知道,该函数返回的是耗时比例。

>>> psutil.cpu_times_percent()
scputimes(user=0.1, nice=0.0, system=0.0, idle=99.9, iowait=0.0, irq=0.0, softirq=0.0, steal=0.0, guest=0.0, guest_nice=0.0)

2.获取内存信息

2.1 psutil.virtual_memory()内存使用情况

psutil.virtual_memory():获取系统内存的使用情况,以命名元组的形式返回内存使用情况,包括总内存,可用内存,内存利用率,buffer和cache等。单位为字节。

  • 获取内存的完整信息
    >>> psutil.virtual_memory()
    svmem(total=2028425216, available=982532096, percent=51.6, used=861827072, free=810414080, active=401735680, inactive=431902720, buffers=4096, cached=356179968, shared=9203712, slab=236351488)
    '''
    返回的是字节Byte为单位的整数
    重点关注的参数是:
        1.total表示内存总的大小
        2.percent表示实际已经使用的内存占比。
        3.available表示还可以使用的内存。
        4.uused表示已经使用的内存
    '''
    
    # 使用total获取内存总大小
    >>> psutil.virtual_memory().total
    2028425216
    ​
    # 使用获取已经使用的内存
    >>> psutil.virtual_memory().used
    865882112
    ​
    # 使用free获取剩余的内存
  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
psutil是一个跨平台的Python库,用于检索有关运行进程和系统利用率(CPU内存,磁盘,网络,传感器)的信息。它可以帮助我们实现系统监控、进程管理、性能分析等功能。以下是psutil库的一些基本用法: 1.安装psutil库 ```shell pip install psutil ``` 2.获取CPU信息 ```python import psutil # 获取CPU逻辑数量 print("CPU逻辑数量:", psutil.cpu_count()) # 获取CPU物理核心 print("CPU物理核心:", psutil.cpu_count(logical=False)) # 获取CPU使用率,每秒刷新一次,累计10次 for i in range(10): print("CPU使用率:", psutil.cpu_percent(interval=1, percpu=True)) ``` 3.获取内存信息 ```python import psutil # 获取内存信息 mem = psutil.virtual_memory() print("内存总量:", mem.total) print("内存使用量:", mem.used) print("内存空闲量:", mem.free) print("内存使用率:", mem.percent) ``` 4.获取磁盘信息 ```python import psutil # 获取磁盘分区信息 partitions = psutil.disk_partitions() for partition in partitions: print("磁盘分区:", partition.device) print("文件系统类型:", partition.fstype) print("磁盘分区挂载点:", partition.mountpoint) print("磁盘分区总容量:", psutil.disk_usage(partition.mountpoint).total) print("磁盘分区使用容量:", psutil.disk_usage(partition.mountpoint).used) print("磁盘分区空闲容量:", psutil.disk_usage(partition.mountpoint).free) print("磁盘分区使用率:", psutil.disk_usage(partition.mountpoint).percent) ``` 5.获取网络信息 ```python import psutil # 获取网络接口信息 net_io = psutil.net_io_counters() print("网络总字节数:", net_io.bytes_sent + net_io.bytes_recv) print("网络总包数:", net_io.packets_sent + net_io.packets_recv) # 获取网络连接信息 connections = psutil.net_connections() for conn in connections: print("本地地址:", conn.laddr) print("远程地址:", conn.raddr) print("状态:", conn.status) ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值