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. 【网摘】JS 或 jQuery 获取当前页面的 URL 信息

    1.设置或获取对象指定的文件名或路径. window.location.pathname 2.设置或获取整个 URL 为字符串. window.location.href 3.设置或获取与 URL 关 ...

  2. VIM 练级

    https://coolshell.cn/articles/5426.html

  3. let const var 比较说明

    现在先来做两道练习题 for(var i=0;i<10;i++){ var a='a' let b = 'b' } console.log(a) console.log(b) for(var i ...

  4. JAVA高级编程数据源datasource

    原文链接 数据源 通过jdbc连接数据库,多建立几条连接放在数据源里面.可以设置数据源的最大连接数,同时活跃的连接数,最少空闲的连接数,能够同时接收处理的连接数等等. dbcp数据源 需要的jar包: ...

  5. 计算机网络历史与基本概念&分层与参考模型(TCP/IP与OSI)&通信过程

    Definition: 计算机网络:使用单一技术相互连接的自主计算机的互联集合. 单台计算机独立自主(不受制于其他计算机),连接介质可以使光纤.铜线也可以是微波.红外.卫星. 互联网络(Interne ...

  6. python学习笔记(3) -- 字符与数字之间的转换函数

    转载:python中的字符数字之间的转换函数 int(x [,base ])         将x转换为一个整数     long(x [,base ])        将x转换为一个长整数     ...

  7. Spring开发踩坑记录

    #1 @EnableEurekaServer无法正常import原因是spring-cloud-dependencies版本太低,改成高版本的Edgware.SR4即可.参考:https://www. ...

  8. Uart学习笔记

    分享一个蛮好的链接:https://blog.csdn.net/wordwarwordwar/article/details/73662379 今天在看的资料是S家的DW_apb_uart的官方文档. ...

  9. ardrino#串口控制led

    void setup() { pinMode(D6, OUTPUT); digitalWrite(D6,HIGH); Serial.begin(); } void loop() { String st ...

  10. 学习Java的书籍资料

    对于程序员来说,编程技术至关重要,然而技术的提高不是一蹴而就的,它需要时间的积累和经验的沉淀.因此本文为大家推荐Java学习的书籍,学虽容易,学好不易,且学且珍惜. 基础类.<Java从入门到精 ...