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. 第二十九节: Asp.Net Core零散获取总结(不断补充)

    1. IWebHostEnvironment获取常用属性 (1).获取项目的根目录 _env.ContentRootPath 等价于 Directory.GetCurrentDirectory() ( ...

  2. CSS背景图片设置

    *{ margin:0px; padding:0px; list-style: none; text-decoration: none; font-family: Arial,'Microsoft Y ...

  3. 「JSOI2014」支线剧情2

    「JSOI2014」支线剧情2 传送门 不难发现原图是一个以 \(1\) 为根的有根树,所以我们考虑树形 \(\text{DP}\). 设 \(f_i\) 表示暴力地走完以 \(i\) 为根的子树的最 ...

  4. php 低版本不能使用php 命令,创建软链接

      ln -s /usr/local/php5/bin/php /usr/bin/php php 低版本不能使用php 命令,创建软链接   phpize 依赖于 phpcli 模式 所以php命令必 ...

  5. Flask - flask-mail

    flasky中git reset --hard 8e 问题 使用flask-mail通过163邮箱的smtp服务发送token认证邮件,要关闭TLS才能发送 原理 还在研究中 结果

  6. “数据接口请求异常:error”,Layui-table使用遇到的最大一个坑

    后台返回的json格式必须和官方给的一模一样 code必须为0, code必须为0, code必须为0, code必须为0

  7. 吴裕雄--天生自然PythonDjangoWeb企业开发:解决ModuleNotFoundError: No module named 'config'报错

    使用创建完模块应用之后python manage.py startapp test_app,您应该进入settings.py并将其注册到

  8. 吴裕雄--天生自然ORACLE数据库学习笔记:数据表对象

    create table students( stuno ) not null, --学号 stuname ), --姓名 sex ), --性别 age int, --年龄 departno ) n ...

  9. android下创建文件夹和修改其权限的方法

    原文:http://www.cnblogs.com/wanqieddy/archive/2011/12/28/2304906.html 由于工作的需要,今天研究了在android下创建文件夹和修改其权 ...

  10. 说说maven依赖冲突,依赖调解,依赖传递和依赖范围

    说maven依赖冲突之前需要先说说maven的 依赖传递. 依赖传递 当前项目引入了一个依赖,该依赖的依赖也会被引入项目.更加准确的说法是,maven会解析直接依赖的POM,将那些必要的间接依赖,以传 ...