栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

统计进程一段时间内的cpu平均负载及最大最小值

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

统计进程一段时间内的cpu平均负载及最大最小值

使用python统计cpu负载,输出均值,最大最小值,输出到excel中

先用这个脚本在shell中抓取数据,然后保存成文件,喂给python脚本

 #!/bin/bash 

trap 'onCtrlC' INT
function onCtrlC () {
    echo 'Ctrl+C is captured'
    exit
}
while true; do
  echo "-------------start------------"
  top -b -n 1 >> hwcpu.info
  echo "-------------end sleep--------"
  sleep 3
done

使用python脚本解析上一步的文件,并计算,写入到excel中

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@文件        :hwcpu.py
@说明        :
@时间        :2022/07/25 17:46:58
@作者        :shitao.li
@版本        :1.0
'''
'''
 使用脚本:hwcpu.sh抓取的top信息即可
 #!/bin/bash 

trap 'onCtrlC' INT
function onCtrlC () {
    echo 'Ctrl+C is captured'
    exit
}
while true; do
  echo "-------------start------------"
  top -b -n 1 >> hwcpu.info
  echo "-------------end sleep--------"
  sleep 3
done

'''
import os
from cmath import e
from signal import pause
from time import sleep

import commands
import sh
import xlsxwriter as xw

file_name = "hwcpu.info"

excelfile = 'hwcpu.xlsx'
os.system("rm -rf hwcpu.xlsx")
sleep(1)
print('-------------------create excel---------------------')
workbook = xw.Workbook(excelfile)  # 创建工作簿
worksheet1 = workbook.add_worksheet("sheet1")  # 创建子表
worksheet1.activate()  # 激活表
title = ['command', 'avg', 'max', 'min']  # 设置表头
worksheet1.write_row('A1', title)  # 从A1单元格开始写入表头
row_index = 2  # 从第二行开始写入数据

def xw_toExcel(name, avg, max, min):  # xlsxwriter库储存数据到excel
    global row_index
    insertData = [name, avg, max, min]
    row = 'A' + str(row_index)
    print(row, insertData)
    worksheet1.write_row(row, insertData)
    row_index += 1


#get name
print('--------------------------get command---------------------------')
return_code, output = commands.getstatusoutput("cat " + file_name + "| awk '{print $12}' | grep -v [0-9].[0-9]| grep -v COMMAND"  )
outputs = output.split('n')
# print(output)
name_outpus = list(set(outputs))
while '' in name_outpus:
    name_outpus.remove('')
while '' in name_outpus:
    name_outpus.remove('')
name_outpus.sort()
print(name_outpus)



print('----------------------calu values-------------------------')
for pid_name in name_outpus:
    print(pid_name)
    average = 0
    max_val = 0
    min_val = 200
    count = 1
    try:
        return_code, output = commands.getstatusoutput("cat " + file_name +"|grep -ie " + pid_name + "| awk '{print $9}'")
        # print('----------'+output)
        outputs = output.split('n')
        # print(outputs)
        values = []
        for num in outputs:
            values.append(float(num))
        for value in values:
            # print(value)
            average = value + average
            count = count + 1
            if max_val < value:
                max_val = value
            if min_val > value:
                min_val = value
        average = average/count        
        xw_toExcel(pid_name, average, max_val, min_val)
        # print(average, max_val, min_val)
    except Exception as e:
        print(e)
        continue

workbook.close()  # 关闭表





转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1026451.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号