Python学习之-psutil详解

前言: (转载:https://blog.csdn.net/weixin_41238626/article/details/137769115)
psutil(process and system utilities)是一个跨平台的库,用于访问系统运行中进程以及系统利用率(如CPU、内存、磁盘、网络等)的信息。它主要用来做系统监控,性能分析,进程管理。psutil支持多个平台,包括Linux、Windows、MacOS、FreeBSD等

 

一 常见方法


1.1 获取系统CPU信息:

获取CPU信息

import psutil

# 获取CPU逻辑核心数
print(psutil.cpu_count())

# 获取CPU物理核心数
print(psutil.cpu_count(logical=False))

# 获取CPU使用率(每个核心或者平均)
print(psutil.cpu_percent(interval=1, percpu=True))

 

1.2 获取内存信息:

 

import psutil

# 获取物理内存
print(psutil.virtual_memory())
# 打印虚拟内存信息 
vm = psutil.virtual_memory()
print(f"总内存: {vm.total} Bytes") 
print(f"可用内存: {vm.available} Bytes") 
print(f"已用内存: {vm.used} Bytes") 
print(f"使用率: {vm.percent}%")

# 获取交换内存
print(psutil.swap_memory())
# 输出交换内存的总量和已用量 
swap = psutil.swap_memory() 
print(f"Total swap memory: {swap.total / (1024 * 1024)} MB") 
print(f"Used swap memory: {swap.used / (1024 * 1024)} MB") 
print(f"Free swap memory: {swap.free / (1024 * 1024)} MB") 
print(f"Percentage used: {swap.percent}%")

 

 

1.3 获取磁盘信息:

获取磁盘信息

 

import psutil

# 获取磁盘总的IO统计信息
print(psutil.disk_io_counters())
# sdiskio(read_count=7619232, write_count=13326738, read_bytes=274449818624, write_bytes=273096798720, 
# read_time=6312, write_time=4962)
# 获取磁盘分区信息
print(psutil.disk_partitions())

# [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), 
# sdiskpart(device='E:\\', mountpoint='E:\\', fstype='NTFS', opts='rw,fixed', maxfile=255, maxpath=260)]
# 获取磁盘使用情况
print(psutil.disk_usage('/'))  # 示例中的'/'表示根目录,在Windows中是'C:\\'等
# sdiskusage(total=202938249216, used=42788544512, free=160149704704, percent=21.1)

 

1.4 获取网络信息:

获取网络信息

import psutil

# 获取网络总的IO统计信息
print(psutil.net_io_counters())

# 获取当前网络连接信息
print(psutil.net_connections())

 

1.5 进程管理:

进程管理信息

 

"""
# 参数使用:
# name:获取进程的名称
# cmdline:获取启动进程的命令行参数
# create_time:获取进程的创建时间(时间戳格式)
# num_fds:进程打开的文件个数
# num_threads:进程的子进程个数
# is_running:判断进程是否正在运行
# send_signal:给进程发送信号,类似与os.kill等
# kill:发送SIGKILL信号结束进程
# terminate:发送SIGTEAM信号结束进程
"""

import psutil

# 获取当前系统所有进程ID
for proc in psutil.process_iter(['pid', 'name', 'status']):
    print(proc.info)

# 获取特定进程
pid = 492  # 假设进程ID为492
p = psutil.Process(pid)

# 获取进程的CPU时间、内存、打开的文件、网络连接等信息
print(p.cpu_times())
print(p.memory_info())
print(p.open_files())
print(p.connections())

# 终止进程
p.terminate()

 

二  psutil应用场景

系统监控:编写脚本或者应用来定期检查系统资源的使用情况,例如检测CPU、内存的用量是否超过阈值,以决定是否需要调整系统负载或者发出警报。

性能分析:用于分析程序运行时占用的系统资源,以优化程序性能。

服务器管理:可以用于远程监测服务器状态,实现自动化资源管理,例如定期检查服务器的健康状况,包括CPU温度、风扇速度等。

进程管理:监控特定进程的行为,包括进程的启动、运行状态、资源使用情况等,也可以用来开发一些任务管理器 类的应用。

网络监测:分析网络的使用状况,监控网络连接和带宽使用。

 

posted @ 2026-03-27 10:54  subsir  阅读(13)  评论(0)    收藏  举报