Python跨平台系统信息库psutil

在这里插入图片描述

本文代码

简介

psutil (process and system utilities) 是一个跨平台库,用于检索关于Python中运行进程和系统利用率(CPU、内存、磁盘、网络、传感器)的信息。

它主要用于系统监视、分析和限制进程资源以及管理正在运行的进程。

它实现了经典UNIX命令行工具(如ps、top、iotop、lsof、netstat、ifconfig、free等)提供的许多功能。

支持Python 2.6, 2.7 和 3.4+

当前支持系统有:

  • Linux
  • Windows
  • macOS
  • FreeBSD, OpenBSD, NetBSD
  • Sun Solaris
  • AIX




安装

Linux下安装需要root权限

扫描二维码关注公众号,回复: 11402953 查看本文章
pip install psutil




CPU

import psutil

print(psutil.cpu_times())  # CPU时间

for x in range(3):
    print(psutil.cpu_percent(interval=1))  # CPU利用率,间隔1s

for x in range(3):
    print(psutil.cpu_percent(interval=1, percpu=True))  # 每个CPU的利用率

for x in range(3):
    print(psutil.cpu_times_percent(interval=1, percpu=False))  # 同cpu_percent(),并给出CPU时间

print(psutil.cpu_count())  # 逻辑CPU数量
print(psutil.cpu_count(logical=False))  # 物理CPU数量

print(psutil.cpu_stats())  # CPU状态:上下文切换次数、中断数、软件中断数、系统调用数

print(psutil.cpu_freq())  # CPU频率

print(psutil.getloadavg())  # 平均系统负载(最近1/5/15分钟)




内存

import psutil

print(psutil.virtual_memory())  # 内存情况

print(psutil.swap_memory())  # 交换内存情况




磁盘

import psutil

print(psutil.disk_partitions())  # 已挂载的磁盘分区,类似UNIX的df命令

print(psutil.disk_usage('C:/'))  # 给定路径分区的磁盘情况

print(psutil.disk_io_counters(perdisk=False))  # 磁盘I/O情况




网络

需要root权限

import psutil

print(psutil.net_io_counters(pernic=True))  # 网络I/O情况

print(psutil.net_connections())  # 套接字连接

print(psutil.net_if_addrs())  # 网络接口,网卡关联地址

print(psutil.net_if_stats())  # 网卡信息




传感器

仅Linux和FreeBSD可用

import psutil

print(psutil.sensors_temperatures())  # 硬件温度

print(psutil.sensors_fans())  # 硬件风扇速度

print(psutil.sensors_battery())  # 电池状态




其他系统信息

import psutil

print(psutil.boot_time())  # 系统启动时间

print(psutil.users())  # 当前连接在系统上的用户




进程

import psutil
import random

print(psutil.pids())  # 当前运行的pid排序列表

p = random.choice(psutil.pids())  # 随机挑一个进程出来
p = psutil.Process(p)
print(p)

print(p.name())  # 进程名

print(p.exe())  # 进程完整路径

print(p.cwd())  # 进程所在路径

print(p.cmdline())  # 进程命令

print(p.pid)  # 进程ID

print(p.ppid())  # 父进程ID

print(p.children(recursive=True))  # 递归查看子进程

print(p.parent())  # 父进程(对象形式)

print(p.parents())  # 父进程(列表形式)

print(p.status())  # 运行状态

print(p.username())  # 用户名

print(p.create_time())  # 创建时间

# print(p.terminal())  # 进程的终端

# print(p.uids())  # 用户ID

# print(p.gids())  # 用户组ID

print(p.cpu_times())  # 累计进程时间

print(p.cpu_percent(interval=1.0))  # CPU利用率

print(p.cpu_affinity())  # 关联的CPU

# print(p.cpu_affinity([0, 1]))  # 设置关联的CPU

# print(p.cpu_num())  # 进程运行的CPU

print(p.memory_info())  # 进程的内存信息

print(p.memory_full_info())  # 进程的完整内存信息

print(p.memory_percent())  # 内存利用率

print(p.memory_maps())  # 进程映射的内存区域

print(p.io_counters())  # IO统计信息

print(p.open_files())  # 打开的文件

print(p.connections())  # 套接字连接

print(p.num_threads())  # 使用的线程数

# print(p.num_fds())  # 打开的文件描述符数量

print(p.threads())  # 进程打开的线程

print(p.num_ctx_switches())  # 进程的上下文切换数量

print(p.nice())  # 进程优先级

# print(p.nice(10))  # 设置进程优先级

print(p.ionice())  # IO优先级

# print(p.ionice(psutil.IOPRIO_CLASS_IDLE))  # 设置IO优先级

# print(p.rlimit(psutil.RLIMIT_NOFILE, (5, 5)))  # 设置资源限制

# print(p.rlimit(psutil.RLIMIT_NOFILE))  # 设置资源限制

print(p.environ())  # 进程的环境变量

print(p.as_dict())  # 字典形式的进程信息

print(p.is_running())  # 进程是否正在运行

# print(p.suspend())  # 用SIGSTOP预先检查PID是否被重用来暂停进程。在Windows上将挂起所有进程线程

# print(p.resume())  # 用SIGSTOP预先检查PID是否被重用来恢复进程。在Windows上将恢复所有进程线程

# print(p.terminate())  # 用SIGTERM预先检查PID是否被重用来终止进程。在Windows上相当于kill

# print(p.kill())  # 用SIGTERM预先检查PID是否被重用来杀死当前进程

# print(p.wait(timeout=3))  # 等待进程终止




更多进程API

import psutil

for proc in psutil.process_iter(['pid', 'name']):  # 生成器
    print(proc.info)

print(psutil.pid_exists(3))  # 进程ID为3是否存在




Windows服务

import psutil

print(list(psutil.win_service_iter()))  # 所有Windows服务

s = psutil.win_service_get('alg')  # 某个服务
print(s.as_dict())




参考文献

  1. psutil: Cross-platform lib for process and system monitoring in Python
  2. psutil documentation
  3. psutil | pypi via the Tidelift Subscription
  4. psutil - 廖雪峰的官方网站

猜你喜欢

转载自blog.csdn.net/lly1122334/article/details/107156779