python3 获取cpu 内存利用率

python通过第三方包psutil来获取cpu和内存信息

1.通过pip安装psutil:

pip install psutil

2.获取指定进程的内存/CPU利用率:

# 定义一个进程列表
process_lst = []

def getProcess(pName):
    # 获取当前系统所有进程id列表
    all_pids  = psutil.pids()

    # 遍历所有进程,名称匹配的加入process_lst
    for pid in all_pids:
        p = psutil.Process(pid)
        if (p.name() == pName):
            process_lst.append(p)

    return process_lst

# 获取进程名位Python的进程对象列表
process_lst = getProcess("Python")

# 获取内存利用率:
for process_instance in process_lst:
    print process_instance.memory_percent()

# 获取cpu利用率:
for process_instance in process_lst:
    process_instance.cpu_percent(None)

sleep(2) 
for process_instance in process_lst:
    print process_instance.cpu_percent(None)

执行结果:这里Python进程有3个,所以内存和cpu利用率分别获取到了3个

对于cpu利用率要额外说明:

  • 第一次调用process_instance.cpu_percent(None)得到的是0
  • 第二次调用process_instance.cpu_percent(None)得到的是从上一次调用同一个进程对象的cpu_percent(None)方法到第二次调用之间的cpu利用率(cpu利用率是计算一段时间内cpu计算时间/总时间)

这里要注意是同一个进程对象,所以下面的代码是错误的:

def getProcess(pName):
    # 获取当前系统所有进程id列表
    all_pids = psutil.pids()
    pid_lst = []

    # 遍历所有进程,名称匹配的加入process_lst
    for pid in all_pids:
        p = psutil.Process(pid)
        if (p.name() == pName):
            pid_lst.append(pid)

    return pid_lst


pid_lst = getProcess("Python")

# 获取cpu利用率:
for pid in pid_lst:
    process_instance = psutil.Process(pid)
    process_instance.cpu_percent(None)

sleep(0)
for pid in pid_lst:
    process_instance = psutil.Process(pid)
    print process_instance.cpu_percent(None)

执行结果:CPU利用率为0

原因在于:2次对pid_lst的遍历,前后2次调用cpu_percent(None)的进程对象不是同一个,每次循环都会重新根据pid实例化一个新的进程对象

3.获取系统的内存和CPU利用率

# 系统的内存利用率
print psutil.virtual_memory().percent

# 系统的CPU利用率
psutil.cpu_percent(None)

sleep(3)
print psutil.cpu_percent(None)

执行结果:

参考:
psutil说明:https://github.com/giampaolo/psutil

 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值