monitor190617.py 监控cpu和内存利用率信息,组织成json格式,并写入到 record.txt 文件中:

import psutil
import time
import json

a = {}
flag=1
f = open('record.txt', 'a')
f.truncate()

while flag < 10:
    b = {}
    b['cpu'] = psutil.cpu_percent(1)
    b['memory'] = psutil.virtual_memory().percent
    a[time.strftime("%H:%M:%S", time.localtime())] = b.copy()
    #print(a)
    #print(json.dumps(a))
    flag += 1
    time.sleep(4)

#json.dump(a,f)
f.write(json.dumps(a))
f.close()

record.txt 的文件内容为:

{"11:39:57": {"cpu": 12.5, "memory": 49.7}, "11:40:02": {"cpu": 18.6, "memory": 49.6}, "11:40:07": {"cpu": 11.8, "memory": 49.5}, "11:40:12": {"cpu": 10.7, "memory": 49.5}, "11:40:17": {"cpu": 12.4, "memory": 49.3}, "11:40:22": {"cpu": 12.9, "memory": 49.2}, "11:40:27": {"cpu": 6.1, "memory": 49.0}, "11:40:32": {"cpu": 19.4, "memory": 48.7}, "11:40:37": {"cpu": 16.9, "memory": 49.3}}

编写 show190617.py ,读取 record.txt 的文件内容,做统计分析,并将分析结果可视化为图表:

import json
import pandas as pd
import matplotlib.pyplot as plt

with open('record.txt','rb') as f:
    a = json.loads(f.read())
    #print('load 并赋值给a后的数据类型:',type(a))
    #print(a)

#print(a)

#print('*' * 50)

time = []
cpu = []
mem = []

for key in a.items():
    #print(key)
    #print('key的数据类型:',type(key))
    time.append(key[0])
    #print(key[1])
    #print('key[1]的数据类型:',type(key[1]))
    cpu.append(key[1]['cpu'])
    mem.append(key[1]['memory'])

print(time)
print(cpu)
print(mem)

s_cpu = pd.Series(cpu)
s_mem = pd.Series(mem)
cpu_mean = s_cpu.mean()
mem_mean = s_mem.mean()
print('cpu利用率平均值是:%f' % cpu_mean)
print('内存利用率平均值是:%f' % mem_mean)

plt.plot(time,cpu, c='r')
plt.plot(time,mem, c='b')
plt.show()

返回信息:

['11:39:57', '11:40:02', '11:40:07', '11:40:12', '11:40:17', '11:40:22', '11:40:27', '11:40:32', '11:40:37']
[12.5, 18.6, 11.8, 10.7, 12.4, 12.9, 6.1, 19.4, 16.9]
[49.7, 49.6, 49.5, 49.5, 49.3, 49.2, 49.0, 48.7, 49.3]
cpu利用率平均值是:13.477778
内存利用率平均值是:49.311111

并显示图表:

参考:

https://www.cnblogs.com/luotianshuai/p/5002110.html

https://www.runoob.com/python/python-dictionary.html

https://www.runoob.com/python/python-tuples.html

https://www.cnblogs.com/onemorepoint/p/7482644.html

https://blog.csdn.net/lambsnow/article/details/78517340

https://www.cnblogs.com/haiyan123/p/8377636.html

https://www.cnblogs.com/fat39/p/7159881.html

Python测试进阶——(4)Python程序监控、存储、分析并可视化CPU和内存利用率的更多相关文章

  1. Python测试进阶——(5)Python程序监控指定进程的CPU和内存利用率

    用Python写了个简单的监控进程的脚本monitor190620.py,记录进程的CPU利用率和内存利用率到文件pid.csv中,分析进程运行数据用图表展示. 脚本的工作原理是这样的:脚本读取配置文 ...

  2. Python测试进阶——(3)编写Python程序监控计算机的服务是否正常运行

    用python写了个简单的监控进程的脚本,当发现进程消失的时候,立即调用服务,开启服务. 脚本的工作原理是这样的:脚本读取配置文件,读取预先配置好的调用系统服务的路径和所要监控的服务在进程管理器中的进 ...

  3. Python高级进阶(一)Python框架之Django入门

    传说中的Django Django由来 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的框架模式,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下 ...

  4. Python编程进阶,Python如何实现多进程?

    进程part1 一.进程介绍 1.获取子父进程 2.进程的基本使用 2.创建带有参数的进程 3.进程之间的数据彼此隔离 4.多个进程之间的异步并发 二.join 1.基本语法 2.使用自定义类的方法创 ...

  5. Python测试进阶——(6)Bash脚本启动Python监控程序并传递PID

    用HiBench执行Hadoop——Sort测试用例,进入 /HiBench-master/bin/workloads/micro/sort/hadoop 目录下,执行命令: [root@node1 ...

  6. Python测试进阶——(1)安装Python测试相关模块

    安装python 安装pip yum -y install epel-release yum -y install python-pip 安装psutil 参考:https://www.cnblogs ...

  7. Python测试进阶——(7)动手编写Bash脚本启动Python监控程序并传递PID

    如下: #./cf_workload_functions.sh function timestamp(){ # get current timestamp sec=`date +%s` nanosec ...

  8. Python测试进阶——(2)配置PyCharm远程调试环境

    新建一个Python项目 配置Deployment,用于本地文件和远程文件的同步,在pycharm的菜单栏依次找到:Tools > Deployment > Configuration 点 ...

  9. Python高级进阶(二)Python框架之Django写图书管理系统(LMS)

    正式写项目准备前的工作 Django是一个Web框架,我们使用它就是因为它能够把前后端解耦合而且能够与数据库建立ORM,这样,一个Python开发工程师只需要干自己开发的事情就可以了,而在使用之前就我 ...

随机推荐

  1. css简单整理

    style1.css /*统一设置h1.h2.a标签的样式*/ h1,h2,a{ color: aqua; font-size: 50px; } /*如果h1.h2没有上面的单独设置样式那么就会继承b ...

  2. 关于ubuntu挂载ntfs无法进行读写的解决方法

    查看挂载信息 df -h 参看要挂载磁盘UUID sudo blkid 编辑/etc/fstab文件: sudo vim /etc/fstab 在最后一行添加如下一行信息: UUID=A248CF46 ...

  3. Java基础 -5.3

    方法的递归调用 指的是一个方法自己调用自己的情况,利用递归调用可以解决一些重复且麻烦的问题 在进行我们递归调用的时候一般要考虑如下几点问题 一定要设置方法递归调用的结束条件 每一次调用的过程之中一定要 ...

  4. python爬虫(二) urlparse和urlsplit函数

    urlparse和urlsplit函数: urlparse: url='http://www.baidu.com/s?wd=python&username=abc#1' result=pars ...

  5. JS 一次性事件问题

    项目的需求就是不能重复提交 是通过click点击事件提交数据,到这里的时候想了很多办法,比如说销毁这个点击事件, 但是这个实现起来是相对比较麻烦的,后面想到了一个相对比较简单的办法 通过推荐判断 JS ...

  6. Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

    一.认识自动化运维 传统运维效率低,大多工作人为完成 传统运维工作繁琐,容易出错 传统运维每日重复做相同的事情 传统运维没有标准化流程 传统运维的脚本繁多,不能方便管理 自动化运维就是要解决上面所有问 ...

  7. js中的||和&&的用法

    与其他语言不同,在JS中,a&&b或者a||b返回的是要么是a,要么是b:而其他语言中返回的是true or false 对于js中的或与运算,需要隐式的转换为boolean类型再来运 ...

  8. 浅谈PHP组件、框架以及Composer

    本篇文章主要介绍了PHP组件.框架以及Composer,具有一定的学习价值,感兴趣的朋友可以了解一下. 什么是组件 组件是一组打包的代码,是一系列相关的类.接口和Trait,用于帮助我们解决PHP应用 ...

  9. 119、Java中String类之通过isEmpty判断是否为空字符串

    01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...

  10. 清除编译缓存DerivedDate

    当多次重构工程造成代码没有错误却编译失败时,可以尝试删除DerivedData目录.DerivedData目录是Xcode的编译缓存,路径是~/Library/Developer/Xcode/Deri ...