python psutil模块常用方法

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}%")

打印结果如图:
python psutil模块常用方法_第1张图片
附:我的电脑磁盘展示
python psutil模块常用方法_第2张图片

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.")

打印结果如图:
python psutil模块常用方法_第3张图片

你可能感兴趣的:(Python3,Linux运维,python)