使用Python记录CPU内存使用率变化

总体思路

  • 使用python脚本周期性获取CPU和内存的使用率,并记录到csv文件中
  • 利用Excel/WPS表格的折线图绘出结果

运行Python脚本

  • 需要使用psutil这个包,可以直接安装python-psutil或者通过pip install psutil
  • 先给出参考代码
$ cat resource_record.py 
#!/usr/bin/python
 
import psutil
import os,datetime,time

record_interval = 0.5 # unit is second

def getMemCpu():
    data = psutil.virtual_memory()
    total = data.total
    free = data.available
    memory = str(int(round(data.percent)))+"%"
    cpu = str(psutil.cpu_percent(interval=record_interval ))+"%"
    return (cpu,memory)

def main():
    now = time.strftime("%Y-%m-%d-%H_%M_%S",time.localtime(time.time()))
    fname = now+r"-report.csv"
    with open('%s' % fname,'w') as f:
        title_str = "Time, CPU ,Mem"
        print title_str
        f.write("Time, CPU ,Mem"+"\n")
        for i in xrange(999999):
            info = getMemCpu()
            tmp_str = "%4s,%5s,%4s" % (i*record_interval,info[0],info[1])
            print tmp_str
            f.write(tmp_str+"\n")

if __name__=="__main__":
    main()
~
  • 运行一段时间后ctrl+c强行中断
$ python resource_record.py 
Time, CPU ,Mem
 0.0, 1.7%, 18%
 0.5, 0.8%, 18%
 1.0, 1.6%, 18%
 1.5, 1.3%, 18%
 2.0,25.4%, 18%
 2.5,23.7%, 18%
 3.0,25.2%, 18%
 3.5,23.8%, 18%
 4.0,24.3%, 18%
 4.5,23.3%, 18%
 5.0,25.3%, 18%
...
^CTraceback (most recent call last):
  File "resource_record.py", line 29, in <module>
    main()
  File "resource_record.py", line 23, in main
    time.sleep(record_interval)
KeyboardInterrupt
  • 当前目录下多了按照日期时间命名的csv文件
$ cat 2020-04-30-11_09_22-report.csv
Time, CPU ,Mem
 0.0, 1.7%, 18%
 0.5, 0.8%, 18%
 1.0, 1.6%, 18%
 1.5, 1.3%, 18%
...

绘图

  • 将csv文件导出,用Excel或WPS打开

  • 选择插入折线图

  • 在图上右击,点“选择数据”,将Time前面的对勾去掉,点“确定”

  • 此时横轴还需要调整,“选择数据”->修改“类别”,选择第一列的数值

  • 可以看出效果了,后面就自己美化吧

  • 当前的csv文件是无法保存折线图的,需要另存为xls或xlsx文件

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值