【python】第三方库-psutil获取系统信息+进程管理

it2022-12-29  71

文章目录

简介安装使用cpu内存disk(硬盘)网络进程windows服务

简介

开源跨平台的库,可获取系统的信息(CPU,内存,磁盘,网络等),可用进行进程管理,还提供了许多命令行工具(ps,top,lsof,netstat,ifconfig,who,df,kill,free,nice,ionice,iostat,iotop,uptime,pidof,tty,taskset,pmap等)。

官方文档:https://pypi.org/project/psutil/git地址:https://github.com/giampaolo/psutil

安装

pip install psutil

使用

cpu

函数说明psutil.cpu_count(,[logical])默认返回逻辑CPU的个数,当设置logical的参数为False时,返回物理CPU的个数psutil.cpu_percent(,[percpu],[interval])返回CPU的利用率,percpu为True时显示所有物理核心的利用率,interval不为0时,则阻塞时显示interval执行的时间内的平均利用率psutil.cpu_times(,[percpu])以命名元组(namedtuple)的形式返回cpu的时间花费,percpu=True表示获取每个CPU的时间花费psutil.cpu_times_percent(,[percpu])功能和cpu_times大致相同,该函数返回的是耗时比例psutil.cpu_stats()以命名元组的形式返回CPU的统计信息,包括上下文切换,中断,软中断和系统调用次数psutil.cpu_freq([percpu])返回cpu频率

示例

import psutil # cpu个数 print(psutil.cpu_count()) # 默认返回逻辑cpu个数 print(psutil.cpu_count(logical=False)) # logical为false返回物理cpu个数 # cpu利用率 print(psutil.cpu_percent()) # cpu利用率 print(psutil.cpu_percent(percpu=True,interval=2)) # percpu为True时显示所有物理核心的利用率,interval不为0时,则阻塞时显示interval执行的时间内的平均利用率 # cpu时间花费(命名元祖的形式返回) print(psutil.cpu_times()) print(psutil.cpu_times(percpu=True)) # percpu=True表示获取每个cpu的时间花费 # cpu耗时比例 print(psutil.cpu_times_percent()) print(psutil.cpu_times_percent(percpu=True)) # percpu=True表示获取每个cpu的时间花费 # 以命名元组的形式返回CPU的统计信息,包括上下文切换,中断,软中断和系统调用次数 print(psutil.cpu_stats()) # 返回cpu频率 print(psutil.cpu_freq())

内存

函数说明psutil.virtual_memory()以命名元组的形式返回内存使用情况,包括总内存,可用内存,内存利用率,buffer和cache等。单位为字节psutil.swap_memory()以命名元组的形式返回swap/memory使用情况,包含swap中页的换入和换出

示例

# 内存使用情况 print(psutil.virtual_memory()) # swap/memory使用情况 print(psutil.swap_memory())

disk(硬盘)

函数说明psutil.disk_io_counters([perdisk])以命名元组的形式返回磁盘io统计信息(汇总的),包括读、写的次数,读、写的字节数等,当perdisk的值为True,则分别列出单个磁盘的统计信息(字典:key为磁盘名称,value为统计的namedtuple)psutil.disk_partitions([all=False])以命名元组的形式返回所有已挂载的磁盘,包含磁盘名称,挂载点,文件系统类型等信息。

当all等于True时,返回包含/proc等特殊文件系统的挂载信息 psutil.disk_usage(path) | 以命名元组的形式返回path所在磁盘的使用情况,包括磁盘的容量、已经使用的磁盘容量、磁盘的空间利用率等

示例

# 查看所有已挂在的磁盘 print(psutil.disk_partitions()) # 使用列表表达式查询指定挂载点信息 print([device for device in psutil.disk_partitions() if device.mountpoint == '/']) # 查看磁盘使用情况 print(psutil.disk_usage('/')) # 查看磁盘io统计汇总 print(psutil.disk_io_counters()) # 分别列出单个磁盘的统计信息 print(psutil.disk_io_counters(perdisk=True))

网络

函数说明psutil.net_io_counter([pernic])以命名元组的形式返回当前系统中每块网卡的网络io统计信息,包括收发字节数,收发包的数量、出错的情况和删包情况。当pernic为True时,则列出所有网卡的统计信息psutil.net_connections([kind])以列表的形式返回每个网络连接的详细信息(namedtuple),命名元组包含fd, family, type, laddr, raddr, status, pid等信息。kind表示过滤的连接类型,支持的值如下:(默认为inet)psutil.net_if_addrs()以字典的形式返回网卡的配置信息,包括IP地址和mac地址、子网掩码和广播地址。psutil.net_if_stats()返回网卡的详细信息,包括是否启动、通信类型、传输速度与mtu。psutil.users()以命名元组的方式返回当前登陆用户的信息,包括用户名,登陆时间,终端,与主机信息psutil.boot_time()以时间戳的形式返回系统的启动时间

示例

# 查看网卡信息统计 print(psutil.net_io_counters()) # 查看网卡配置信息 a = psutil.net_if_addrs() print(a['eth0']) print(a['eth0'][0]) print(a['eth0'][0][1]) # 查看当前登录用户信息 print(psutil.users())

进程

进程管理 函数说明psutil.pids()以列表的形式返回当前正在运行的进程psutil.pid_exists(1)判断给点定的pid是否存在psutil.process_iter()迭代当前正在运行的进程,返回的是每个进程的Process对象psutil.Process()对进程进行封装,可以使用该类的方法获取进行的详细信息,或者给进程发送信号 选取进程后的单个进程方法 函数说明name()获取进程的名称cmdline()获取启动进程的命令行参数create_time()获取进程的创建时间(时间戳格式)num_fds()进程打开的文件个数num_threads()进程的子进程个数is_running()判断进程是否正在运行send_signal()给进程发送信号,类似与os.kill等kill()发送SIGKILL信号结束进程terminate()发送SIGTEAM信号结束进程parent()该进程的父进程children()该进程的子进程status()该进程的状态username()该进程的用户名as_dict()该进程的大部分信息(转换成字典) 更多详细内容详见官方文档 示例 # 以列表形式查看正在运行的进程 print(psutil.pids()) # 查看进程运行状态,以布尔形式显示 print(psutil.pid_exists(1)) # 迭代当前正在运行进程,查看列表中前三个实例的信息 print(list(psutil.process_iter())[:3]) # 通过进程号实例化对象 process = psutil.Process(1) print(process) # 获取进程的名称 process.name() # 进程启动时间 process.create_time() # 进程打开文件数 print(process.num_fds()) # 进程子进程数 print(process.num_threads())

windows服务

函数说明psutil.win_service_iter()获取windows服务进程列表psutil.win_service_get(name)根据名称搜索进程内容

示例

print(list(psutil.win_service_iter())) s = psutil.win_service_get('alg') print(s.as_dict())

更多详细内容详见官方文档

最新回复(0)