psutil(进程和系统实用程序)是一个跨平台的库, 用于 在 Python 中检索有关运行进程和系统利用率 (CPU, 内存, 磁盘, 网络, 传感器) 的信息它主要用于系统监视, 分析和限制流程资源以及运行流程的管理它实现了 UNIX 命令行工具提供的许多功能, 例如: ps,top,lsof,netstat,ifconfig,who,df,kill,free,nice,ionice,iostat,iotop,uptime,pidof,tty,taskset,pmappsutil 目前支持以下平台:
Linux 的
视窗
- OSX,
- FreeBSD,OpenBSD,NetBSD
- Sun Solaris
- AIX
... 32 位和 64 位体系结构, Python 版本从 2.6 到 3.6
1 获取系统性能信息
- #! /env python3
- #coding=utf-8
- import psutil
''''获取 cpu 信息'''
- a = psutil.cpu_times() # 使用 cpu_times 方法获取 cpu 完成信息, 需要显示所有的 cpu 信息
- b = psutil.cpu_times().user # 获取单项 cpu 的数据信息, 如用户 user 的 cpu 时间比
- c = psutil.cpu_count() # 获取 cpu 的逻辑个数
- print (a)
- print (b)
- print (c)
- '''内存信息'''
- mem = psutil.virtual_memory() # 使用 pstuil.virtual_memory 方法获取内存的完整信息
- mem_total = psutil.virtual_memory().total # 获取内存总数
- mem_free = psutil.virtual_memory().free # 获取内存剩余
- print (mem)
- print (mem_total)
- print (mem_free)
- '''磁盘信息'''
- disk_partitions = psutil.disk_partitions() # 获取磁盘完整信息
- disk_usage = psutil.disk_usage('/') # 获取整个硬盘的信息
- disk_usage_c = psutil.disk_usage('C://') # 获取分区 c 的硬盘信息
- disk_io = psutil.disk_io_counters() # 获取硬盘的总 io 个数读写信息
- disk_io_perdisk = psutil.disk_io_counters(perdisk=True) #perdisk=True 参数获取单个分区 IO 个数读写信息
- print (disk_partitions)
- print (disk_usage)
- print (disk_usage_c)
- print ('硬盘总 io=' +str(disk_io))
- print ('单个分区信息 ='+str(disk_io_perdisk))
- '''网络信息'''
- net_io = psutil.net_io_counters() # 获取网络总 IO 信息默认 pernic=False
- net_io_pernic = psutil.net_io_counters(pernic=True) # 获取每个网卡的 io 信息
- net_connections = psutil.net_connections()# 获取所有的连接信息
- print (net_io)
- print (net_io_pernic)
- print (net_connections)
- '''其他系统信息'''
- users = psutil.users() # 当前登录系统的用户信息
- import datetime
- boot_time = psutil.boot_time() # 获取开机时间, 为 linux 格式
- boot_time_nu = datetime.datetime.fromtimestamp(psutil.boot_time()).strftime('%Y-%m-%d%H:%M:%S') # 转换为自然格式
- print (users)
- print (boot_time)
- print (boot_time_nu)
2 系统进程管理
- #! /env python3
- #coding=utf-8
- import psutil
- '''进程信息'''
- pids = psutil.pids() # 列出所有进程 id
- pids_4644= psutil.Process(4644) # 列出指定 pid 为 4644 的进程信息
- print (pids)
- print (pids_4644.name()) # 输出进程名
- print (pids_4644.exe()) # 输出进程路径
- print (pids_4644.cwd()) # 输出绝对路径
- print (pids_4644.status()) # 输出进程状态
- print (pids_4644.create_time()) # 输出创建时间时间戳格式
- #print (pids_4644.gid()) # 输出进程 gid 信息
- print (pids_4644.cpu_times) # 输出 cpu 时间信息, 包括 user,system 两个 cpu 时间
- print (pids_4644.cpu_affinity()) #get 进程 cpu 亲和度
- print (pids_4644.memory_percent()) # 进程利用率
- print (pids_4644.memory_info) # 进程内存信息
- print (pids_4644.io_counters()) # 进程 io 信息, 包括读写 IO 数及字节数
- print (pids_4644.connections()) # 返回打开进程 sockert 的 namedutples 列表包括 fs,family 等信息
- print (pids_4644.num_threads()) # 进程开启的线程数
- '''popen 类的使用'''
- import psutil
- from subprocess import PIPE # 通过 psutil 的 popen 方法启动的应用程序, 可以跟踪该程序的所有相关信息
来源: http://www.bubuko.com/infodetail-2530376.html