python3 获取电脑磁盘读写、CPU、内存使用率高的进程和进程PID

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个进程。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值