Python利用psutil获取CPU与内存等硬件信息

 更新时间:2023年07月02日 15:21:55   作者:微小冷  
psutil是Python的一个第三方库,提供了各种强大的硬件信息查阅功能,这篇文章主要为大家介绍了如何利用psutil获取CPU与内存等硬件信息,需要的可以参考一下

psutil是Python的一个第三方库,提供了各种强大的硬件信息查阅功能,是标准库推荐的第三方库。一般conda会自行携带这个模块,如果未安装,可直接pip

pip install psutil

CPU 相关

函数功能
cpu_count()CPU核心数/线程数
cpu_freq()CPU频率
cpu_times()CPU时间
cpu_stats()CPU统计信息
cpu_percent()CPU使用率

以i9-13900H为例,是一个6大核8小核总计20线程的CPU,则其核心数和线程数为

import psutil
print(psutil.cpu_count(logical=False))  # 返回核心数14
print(psutil.cpu_count())               # 进程数20
print(psutil.cpu_freq())                # CPU频率
# scpufreq(current=2600.0, min=0.0, max=2600.0)

cpu_times和cpu_percent功能类似,都是统计CPU的时间占用,前者主要统计CPU 的用户/系统/空闲时间;后者则返回某个时间段内CPU的占用比例,可通过interval来调节统计的延时。二者均提供percpu参数,为True时,将返回每个线程的占用情况。

print(psutil.cpu_times())
# scputimes(user=217520.578125, system=74740.26562500186, idle=8452631.640624998, interrupt=3238.703125, dpc=2513.390625)
# 0.5秒内每个现成的资源利用占比
print(psutil.cpu_percent(interval=0.5, percpu=True))
# [0.0, 0.0, 0.0, 0.0, 0.0, 2.9, 11.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 24.2, 0.0, 0.0, 0.0, 32.3, 0.0, 0.0]

通过cpu_stats函数可查看CPU 的统计信息,包括上下文切换、中断、软中断,以及系统调用次数等等

print(psutil.cpu_stats())
# scpustats(ctx_switches=3751269358, interrupts=3638215162, soft_interrupts=0, syscalls=443301569)

内存相关

函数功能
virtual_memory()内存利用情况
swap_memory()交换内存

这两个函数的返回值均有下面几个属性

  • total 总内存
  • used 已使用的内存
  • percent 内存使用率

此外,virtual_memory返回值中有available属性,表示可用内存,示例如下

vm = psutil.virtual_memory()
GB = 1024*1024*1024
print(vm.total/GB, "GB")
# 31.741661071777344 GB
print(vm.available/GB, "GB")
# 15.915771484375 GB
print(vm.percent, "%")
# 49.9 %
print(vm.used/GB, "GB")
# 15.825889587402344 GB
print(psutil.swap_memory()) # 返回交换内存
# sswap(total=5100273664, used=11184832512, free=-6084558848, percent=219.3, sin=0, sout=0)

硬盘相关

函数说明
disk_partitions()返回分区情况
disk_usage()输入盘符,返回磁盘占用情况
disk_io_counters()磁盘的读写信息
psutil.disk_usage("C:") # 查看C盘的读写情况,单位是B
# sdiskusage(total=511282507776, used=307277705216, free=204004802560, percent=60.1)
parts = psutil.disk_partitions()
for p in parts: print(p)
'''
sdiskpart(device='C:\\', mountpoint='C:\\', fstype='NTFS', opts='rw,fixed', maxfile=255, maxpath=260)
sdiskpart(device='D:\\', mountpoint='D:\\', fstype='NTFS', opts='rw,fixed', maxfile=255, maxpath=260)
'''

disk_io_counters函数中,perdisk为True时,返回每个磁盘的读写信息,否则返回所有磁盘相加之后的信息,示例如下

print(psutil.disk_io_counters(perdisk=True))
'''
{'PhysicalDrive0': sdiskio(read_count=4063907, write_count=12341332, read_bytes=162591043584, write_bytes=235670665216, read_time=6212, write_time=10800), 'PhysicalDrive1': sdiskio(read_count=782479, write_count=332042, read_bytes=55565715968, write_bytes=9277476864, read_time=897, write_time=308)}
'''

电源相关

函数返回值
sensors_temperatures()温度
sensors_fans()风扇转速
sensors_battery()电源状态

其中CPU温度和风扇转速并不适用于Widows系统,故而下面只测试一下sensors_battery函数

>>> psutil.sensors_battery()
sbattery(percent=100, secsleft=<BatteryTime.POWER_TIME_UNLIMITED: -2>, power_plugged=True)

其中percent表示电池电量剩余百分比;power_plugged为True,表示电源已连接。

到此这篇关于Python利用psutil获取CPU与内存等硬件信息的文章就介绍到这了,更多相关Python psutil获取硬件信息内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • opencv-python 开发环境的安装、配置教程详解

    opencv-python 开发环境的安装、配置教程详解

    这篇文章主要介绍了opencv-python 开发环境的安装、配置,本文分步骤通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • Python中最好用的json库orjson用法详解

    Python中最好用的json库orjson用法详解

    orjson是一个用于python的快速、正确的json库,它的基准是 json最快的python库,具有全面的单元、集成和互操作性测试,下面这篇文章主要给大家介绍了关于Python中最好用的json库orjson用法的相关资料,需要的朋友可以参考下
    2022-06-06
  • Python+drawpad实现CPU监控小程序

    Python+drawpad实现CPU监控小程序

    这篇文章主要为大家详细介绍了如何利用Python+drawpad实现一个简单的CPU监控小程序,文中示例代码讲解详细,感兴趣的小伙伴可以尝试一下
    2022-08-08
  • Python字符串的创建和驻留机制详解

    Python字符串的创建和驻留机制详解

    字符串驻留是一种在内存中仅保存一份相同且不可变字符串的方法,本文重点给大家介绍Python字符串的创建和驻留机制,感兴趣的朋友跟随小编一起看看吧
    2022-02-02
  • Python中使用摄像头实现简单的延时摄影技术

    Python中使用摄像头实现简单的延时摄影技术

    这篇文章主要介绍了Python中使用摄像头实现简单的延时摄影技术,本文只是一个简单的小示例,讲解了实现过程并给出实现代码,需要的朋友可以参考下
    2015-03-03
  • Python实现圣诞树的多种方法

    Python实现圣诞树的多种方法

    这篇文章主要为大家介绍了Python实现圣诞树的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • 深入浅析Python 中的sklearn模型选择

    深入浅析Python 中的sklearn模型选择

    这篇文章主要介绍了Python sklearn模型选择的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • Django 全局的static和templates的使用详解

    Django 全局的static和templates的使用详解

    这篇文章主要介绍了Django 全局的static和templates的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • Python中PyMySQL的基本操作

    Python中PyMySQL的基本操作

    PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库,这篇文章主要介绍了Spring DI依赖注入详解,需要的朋友可以参考下
    2022-11-11
  • python使用pyaudio录音和格式转化方式

    python使用pyaudio录音和格式转化方式

    这篇文章主要介绍了python使用pyaudio录音和格式转化方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05

最新评论