psutil是一个跨平台库(第三方库/模块),能够获取系统进程进程及CPU,内存,磁盘、网络使用率等信息;主要用于监控系统,分析和限制系统资源及进程的管理
它实现了n多个同等命令行工具实现的功能,如ps、top、lsof、netstat、ifconfig、who、df、kill、free、nice、ionice、iostat、iotop、uptime、pidof、tty、taskset、pmap等命令工具
psutil的单位是字节
psutil官网
psutil使用参考文档
CPU信息 | 说明 |
---|---|
User Time | 执行用户进程的时间百分比 |
Systime | 执行内核进程和中断的时间百分比 |
Wait IO | IO等待使CPU处于idle(空闲)状态的时间百分比 |
Idle | CPU处于idle状态的时间百分比 |
import psutil
c=psutil.cpu_times()
#获取CPU的全部信息
print(c)
c=psutil.cpu_times(percpu=True)
#显示所有的逻辑CPU信息
print(c)
import psutil
c=psutil.cpu_count(logical=False)
#获取物理CPU个数
print(c)
c=psutil.cpu_count()
#获取逻辑CPU个数,默认logical=True
print(c)
import psutil
for i in range(3):
c=str(psutil.cpu_percent(interval=1))
# 获取CPU使用率,间隔1秒
print('cpu的使用率:'+c+'%')
for i in range(3):
c=str(psutil.cpu_percent(interval=1,percpu=True))
# 获取逻辑CPU使用率,间隔1秒
print('逻辑cpu的使用率:'+c+'%')
for i in range(1):
c=str(psutil.cpu_times_percent(interval=1))
# 获取特定CPU使用率的百分比,间隔1秒,percpu=True是逻辑
print('cpu的使用率:'+c+'%')
内存信息 | 说明 |
---|---|
total | 总内存数 |
used | 已使用内存数 |
free | 空闲内存 |
buffers | 缓冲使用数 |
cache | 缓存使用数 |
swap | 交换分区使用数 |
获取内存信息
获取内存部分信息,需要获取全部信息在其中提取
import psutil
m=psutil.virtual_memory()
#获取内存全部信息
print(m)
svmem(total=8213225472, available=2455859200, percent=70.1, used=5757366272, free=2455859200)
import psutil
m=psutil.virtual_memory()#获取内存全部信息
m=str(round(m.total/1024/1024/1024,2))
#获取总内存,总内存转换成GB单位大小,保留两位
print('总内存:'+m+'G')
import psutil
m=psutil.virtual_memory()
m=str(round(m.free/1024/1024/1024,2))
print('空闲内存::'+m+'G')
import psutil
m=psutil.virtual_memory()
m=str(round(m.used/1024/1024/1024,2))
print('使用内存::'+m+'G')
m=psutil.swap_memory()
print(m)
sswap(total=4563402752, used=3675496448, free=887906304, percent=80.5, sin=0, sout=0)
import psutil
m=psutil.swap_memory()
m=str(round(m.total/1024/1024/1024,2))
print('总大小:'+m+'\tG')
磁盘主要是关注使用率以及IO(读写)信息
磁盘信息获取 | 说明 |
---|---|
read_count | 读IO数 |
write_count | 写IO数 |
read_bytes | IO读字节数 |
write_bytes | IO写字节数 |
read_time | 磁盘读时间 |
write_time | 磁盘写时间 |
import psutil
f=psutil.disk_partitions()#获取磁盘全部信息
print(f)
[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)]
import psutil
f=psutil.disk_partitions()
#获取磁盘全部信息
print(f)
f=psutil.disk_usage('/')
#获取根分区大小
print(f)
f=str(round(psutil.disk_usage('C:/').total/1024/1024/1024,2))
#获取C盘的大小,转化GB单位
print('C盘总空间大小:'+f+'G')
#根据这个设置磁盘的使用大小,剩余空间,其他磁盘的空间
import psutil
f=psutil.disk_io_counters()
#获取硬盘总的IO个数和读写信息
print(f)
f=psutil.disk_io_counters(perdisk=True)
#获取单个分区的IO个数和读写信息
print(f)
网络信息 | 说明 |
---|---|
bytes_sent | 发送字节数 |
bytes_recv | 接收字节数 |
packets_sent | 发送数据包数 |
packets_recv | 接收数据包数 |
import psutil
n=psutil.net_io_counters()
#获取网络总的IO信息数,默认pernic=False,默认就是当前网口
print(n)
n=psutil.net_io_counters(pernic=True)
#每个网络接口的IO信息
print(n)
1、获取当前用户的登录信息
import psutil
n=psutil.users()
#获取当前用户的登录信息
print(n)
2、获取开机系统时间
import psutil,datetime
n=psutil.boot_time()
#获取开机时间,以Linux的时间戳返回,是秒数,你转换一下
n=datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S")
#设置指定的时间格式返回,转换我们的自然时间
print(n)
1、获取进程信息
import psutil
p=psutil.pids()
#列出所有进程
print(p)
import psutil
p=psutil.pids()
#列出所有进程
p=psutil.Process(8332)
#获取进程的详细信息,服务名字,状态等
print(p)
p=psutil.Process(8332).name()
#获取服务进程的单独项,进程id,状态、服务名字等,更改后面参数即可
print(p)
2、进程其他信息
import psutil,datetime
p=psutil.Process(8332).exe()
#获取服务的bin路径
print(p)
p=psutil.Process(8332).cwd()
#进程服务的绝对路径
print(p)
p=psutil.Process(8332).status()
#服务的状态
print(p)
p=datetime.datetime.utcfromtimestamp(psutil.Process(8332).create_time()).strftime("%Y-%m-%d %H:%M:%S")
#服务的创建时间
print(p)
# gids()获取没有成功
p=psutil.Process(8332).cpu_times()
#进程cpu时间信息,user和system两个时间
print(p)
p=psutil.Process(8332).cpu_affinity()
#get进程cpu的亲和度
print(p)
p=psutil.Process(8332).memory_percent()
#进程内存使用率
print(p)
p=psutil.Process(8332).memory_info()
#进程内存内存rss、vms信息
print(p)
p=psutil.Process(8332).io_counters()
#进程读写信息
print(p)
p=psutil.Process(8332).connections()
#返回打开进程socket的namedutples列表,fs、family等信息
print(p)
暂代
psutil提供的popen类的作用是获取用户启动的应用程序的信息,便于跟踪进程