psutil 是一个功能强大的跨平台第三方库,用于检索系统相关信息和进程管理。它提供了一些方便的函数和方法,可以获取 CPU 使用率、内存使用情况、磁盘信息、网络统计数据以及进程列表等。
1. 安装psutil
pip install psutil
2. 获取 CPU 使用率
import psutil
cpu_count = psutil.cpu_count()
print('逻辑CPU的个数:%s' % cpu_count)
cpu_count = psutil.cpu_count(logical=False)
print('物理CPU的个数:%s' % cpu_count)
# interval=1表示在获取CPU使用率之前等待的秒数,默认为0秒
cpu_percent = psutil.cpu_percent(interval=1)
print(f"CPU 整体使用率: {cpu_percent}%")
# percpu=True表示将每个逻辑CPU的使用率都返回,而不仅仅返回总体的使用率
cpu_percent = psutil.cpu_percent(interval=1, percpu=True)
print(f"各个逻辑CPU 使用率: {cpu_percent}")
打印结果如图:
3. 获取内存使用情况
import psutil
memory = psutil.virtual_memory()
total_memory = memory.total // (1024 ** 3) # 总内存大小
used_memory = memory.used // (1024 ** 3) # 已使用内存大小
percent_memory = memory.percent # 内存使用百分比
swap = psutil.swap_memory().total // (1024 ** 3) # 获取系统的swap交换分区大小
print(f"总内存: {total_memory}GB")
print(f"已使用内存: {used_memory}GB")
print(f"内存使用率: {percent_memory}%")
print(f"swap交换分区总内存: {swap}GB")
打印结果如图:
4. 获取磁盘使用情况
import psutil
# 获取磁盘分区列表
disk_partitions = psutil.disk_partitions()
for partition in disk_partitions:
print(f"设备: {partition.device}")
print(f"挂载点: {partition.mountpoint}")
print(f"文件系统类型: {partition.fstype}")
print()
# 获取指定磁盘的使用率
disk_usage = psutil.disk_usage('C:/')
total_disk = disk_usage.total // (1024 ** 3) # 总磁盘空间
used_disk = disk_usage.used // (1024 ** 3) # 已使用磁盘空间
percent_disk = disk_usage.percent # 磁盘使用百分比
print(f"C盘总磁盘空间: {total_disk}GB")
print(f"已使用磁盘空间: {used_disk}GB")
print(f"磁盘使用率: {percent_disk}%")
打印结果如图:
附:我的电脑磁盘展示
5. 获取网络统计数据
import psutil
import datetime
# psutil.net_io_counters()函数返回的是系统启动以来的网络数据统计信息,而不是指定时间范围内的数据
net_io = psutil.net_io_counters()
bytes_sent = net_io.bytes_sent # 发送的字节数
bytes_recv = net_io.bytes_recv # 接收
print(f"发送的字节数: {bytes_sent / (1024 ** 2)}M")
print(f"接收的字节数: {bytes_recv / (1024 ** 2)}M")
打印结果如图:
6. 获取进程信息
import psutil
processes = list(psutil.process_iter())
print('=' * 100)
# 获取所有正在运行的进程,进程较多,这里只打印前5个
for process in processes[:5]:
print(f"PID: {process.pid}, Name: {process.name()}")
print('=' * 100)
# 获取指定进程的详细信息(按PID或名称)
pid = 232 # 进程的PID
process = psutil.Process(pid)
# 或者按进程名称查找
# process_name = 'python.exe'
# process = None
# for p in psutil.process_iter(['name']):
# if p.info['name'] == process_name:
# process = p
# break
if process is not None:
print(f"PID: {process.pid}")
print(f"Name: {process.name()}")
print(f"Status: {process.status()}")
print(f"CPU Usage: {process.cpu_percent()}%")
print(f"Memory Usage: {process.memory_info().rss/(1024 ** 2)} M")
else:
print("Process not found.")
print('=' * 100)
# 终止指定的进程
pid = 12345 # 进程的PID
try:
process = psutil.Process(pid)
process.terminate()
print(f"Process {pid} terminated.")
except psutil.NoSuchProcess:
print(f"Process {pid} not found.")
打印结果如图: