import psutil
import time
# 获取进程读写磁盘信息
def Disk_io(pid):
try:
p = psutil.Process(int(pid))
Read_count_1 = p.io_counters().read_count #读操作数
Write_count_1 = p.io_counters().write_count #写操作数
Read_bytes_1 = p.io_counters().read_bytes #读字节数
Write_bytes_1 = p.io_counters().write_bytes #写字节数
time.sleep(1)
Read_count_2 = p.io_counters().read_count #读操作数
Write_count_2 = p.io_counters().write_count #写操作数
Read_bytes_2 = p.io_counters().read_bytes #读字节数
Write_bytes_2 = p.io_counters().write_bytes #写字节数
Read_count = Read_count_2-Read_count_1
Write_count = Write_count_2-Write_count_1
Read_bytes = Read_bytes_2-Read_bytes_1
Write_bytes = Write_bytes_2-Write_bytes_1
####################################################
if Read_count != 0 or Write_count != 0 or Read_bytes != 0 or Write_bytes != 0 :
if Read_bytes < 1024:
Read_bytes_format = str(Read_bytes)+"B/s"
elif 1024 <= Read_bytes < 1048576:
Read_bytes_format = str(Read_bytes/1024)+"K/s"
elif 1048576 <= Read_bytes < 1073741824:
Read_bytes_format = str(Read_bytes/1024/1024)+"M/s"
else:
Read_bytes_format = str(Read_bytes/1024/1024/1024)+"G/s"
###############################
if Write_bytes < 1024:
Write_bytes_format = str(Write_bytes)+"B/s"
elif 1024 <= Write_bytes < 1048576:
Write_bytes_format = str(Write_bytes/1024)+"K/s"
elif 1048576 <= Write_bytes < 1073741824:
Write_bytes_format = str(Write_bytes/1024/1024)+"M/s"
else:
Write_bytes_format = str(Write_bytes/1024/1024/1024)+"G/s"
return Read_count,Write_count,Read_bytes_format,Write_bytes_format #读操作数 写操作数 读字节率 写字节率
else:
return 0,0,0,0
except Exception as ex:
print(ex)
# 获取cpu的使用率
def CPU_Utilization(P):
try:
p1 = psutil.Process(int(P))
return str(p1.cpu_percent(interval=1))+"%" #等1秒
except Exception as ex:
print(ex)
for i, mem in enumerate([(p.pid, p.info) for p in sorted( list(psutil.process_iter(attrs=['name','memory_percent'])), key=lambda p: p.info['memory_percent'])[-5:] ][::-1]):
try:
print('-'*20,i,'-'*20)
M_p = psutil.Process(mem[0])
print('PID:',mem[0])
print('进程名:',mem[1]['name'])
print('进程详细信息:',"".join(M_p.cmdline()))
print('内存占用比:',str(mem[1]['memory_percent'])+'%')
print('进程运行状态:',M_p.status())
print('CPU使用率:',CPU_Utilization(mem[0]))
Read_count,Write_count,Read_bytes_format,Write_bytes_format = Disk_io(mem[0])
print('磁盘读操作数:',Read_count,'磁盘写操作数:',Write_count,'磁盘读字节率:',Read_bytes_format,'磁盘写字节率:',Write_bytes_format)
except Exception as ex:
print(ex)
我获取的是内存占用率最高的5个进程。