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. redhat 7.6 iptables 配置

    1.查看iptables默认表(filter) iptables -L -n 2.iptables 默认内链(filter)表三种: INPUT:处理进入防火墙的数据包 FORWARD:源自其他计算机 ...

  2. Dart语言学习(十四) Dart泛型

    什么是泛型? 通俗理解:泛型就是解决 类 接口 方法的复用性.以及对不特定数据类型的支持(类型校验) 如下代码,只能返回string类型的数据 String getData(String value) ...

  3. ava StringTokenizer 类使用方法

    菜鸟教程 -- 学的不仅是技术,更是梦想! 首页 笔记首页 Android 互联网 程序员人生 程序员笑话 编程技术 红包 知识店铺 --> 首页 Android 鸡汤 逗乐 Search Ja ...

  4. android的ListAdapter简单用法

    ListAdapter是一个整个Activity有且仅有一个ListView控件的Activity 使用步骤:1. 创建MyListViewAdapter(类名可以自定义) extends ListA ...

  5. [蓝桥杯2015初赛]生命之树(树状dp)

    在X森林里,上帝创建了生命之树.他给每棵树的每个节点(叶子也称为一个节点)上,都标了一个整数,代表这个点的和谐值.上帝要在这棵树内选出一个非空节点集S,使得对于S中的任意两个点a,b,都存在一个点列 ...

  6. 孤荷凌寒自学python第103天认识区块链017

    [主要内容] 今天继续分析从github上获取的开源代码怎么实现简单区块链的入门知识,共用时间25分钟. (此外整理作笔记花费了约34分钟) 详细学习过程见文末学习过程屏幕录像. 今天所作的工作是进一 ...

  7. python学习 —— 字符画

    代码: import os from PIL import Image WIDTH = int(250) HEIGHT = int(250/2) ascii_char = list('toahkbdp ...

  8. Servlet对用户输入的数据进行读取

    逻辑代码: package com.zyb.test; import java.io.IOException; import java.util.Enumeration; import javax.s ...

  9. Day11 - H - Euclid's Game HDU - 1525

    Two players, Stan and Ollie, play, starting with two natural numbers. Stan, the first player, subtra ...

  10. C语言调试器GDB和LLDB的使用方法

    调试器的使用 编译输出带调试信息的程序 调试信息包含:指令地址.对应源代码及行号 指令完成后,回调 LINUX使用GDB MAX使用LLDB 使用说明 // 开始调试testlib程序 lldb te ...