前期准备:

1.python2.7环境

2.相关第三方库下载安装

脚本工作过程:

1.根据输入的进程名判断进程是否存在,如果不存在则进行等待,直到检测到进程PID,中途进程退出抛出异常,键入enter后等待进程重启

实际作用:

1.可以重复监控某一进程CPU资源占用情况,结果同步到本地D盘文本保存

#coding=utf-8
import psutil
import sys
import time
import win32com.client class Cpu():
def __init__(self,name):
self.name=name def pid(self):
for proc in psutil.process_iter():
pinfo = proc.as_dict(attrs=['pid', 'name'])
# key_pid = list(pinfo)[0]
key_pid_value = list(pinfo.values())[0]
# key_name = list(pinfo)[1]
key_name_value = list(pinfo.values())[1] if key_name_value == self.name:
return key_pid_value def get_cpu_info(self):
# reload(sys)
# sys.setdefaultencoding('utf-8')
filename = 'D:\\' + 'CPU_usage_result' + str(int(time.time())) + ".txt"
text = open(filename, 'w')
while True:
cpucount = psutil.cpu_count(logical=True)
process = psutil.Process(int(PID))
cpupercent = process.cpu_percent(interval=2)
cpu = int(cpupercent / cpucount)
if cpu <= 50:
print 'cpu usage:%s%%' % cpu + ' ' + time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
text.write('cpu usage:%s%%' % cpu + ' ' + time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())+'\n')
text.flush()
else:
print 'cpu usage:%s%%,too high' % cpu + ' ' + time.strftime('%Y-%m-%d %H:%M:%S',
time.localtime())
text.write('cpu usage:%s%%' % cpu + ' ' + time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())+'\n')
text.flush()
# text.close() def CheckProcExistByPN(self):
try:
WMI = win32com.client.GetObject('winmgmts:')
processCodeCov = WMI.ExecQuery('select * from Win32_Process where Name="%s"' % self.name)
except Exception, e:
print "error : ", e
if len(processCodeCov) > 0:
# print name + " exist"
return 1
else:
# print name + " is not exist"
return 0 if __name__=='__main__':
ProcessName = raw_input('ProcessName: ')
reslut=Cpu(ProcessName)
while True:
try:
if reslut.CheckProcExistByPN() == 1:
PID = reslut.pid()
print 'Process %s' % PID +' '+'result in D:\\CPU_usage_result.txt'
time.sleep(1)
print "-------------------------------------------------"
print reslut.get_cpu_info()
else:
print 'Wait for process start'+ ' ' +time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
time.sleep(1) except Exception, e:
print "Quit : ", e
raw_input()

【原创】面向对象版本地CPU资源占用监控脚本的更多相关文章

  1. JVM的CPU资源占用过高问题的排查

    互联网后端架构 https://mp.weixin.qq.com/s/LiqAy2DikbmZzqogb5XRdA JVM的CPU资源占用过高问题的排查 互联网后端架构  今天 上午线上某应用的一台J ...

  2. 一个线上JVM的CPU资源占用过高问题的排查

    原文:https://www.iteye.com/blog/tyrion-2293369 上午线上某应用的一台JVM的CPU占比突然飙高到192%,并且一直下不来,导致监控一直告警,好久没处理这种问题 ...

  3. 【转】关于JVM CPU资源占用过高的问题排查

    http://my.oschina.net/shipley/blog/520062 一.背景: 先执行一个java程序里面开了两个线程分别都在while循环做打印操作. ? 1 # java -cp  ...

  4. linux--关于JVM CPU资源占用过高的问题排查

    一.背景: 先执行一个java程序里面开了两个线程分别都在while循环做打印操作. # java -cp ./test-threads.jar com.spiro.Main 二.现象: 通过top命 ...

  5. 历史执行Sql语句性能分析 CPU资源占用时间分析

    SELECT     HIGHEST_CPU_QUERIES.PLAN_HANDLE,     HIGHEST_CPU_QUERIES.TOTAL_WORKER_TIME,     Q.DBID,   ...

  6. postgresql某进程占用cpu资源过高,降不下来

    由于是开发阶段,所以并没有配置postgres的参数,都是使用安装时的默认配置,以前运行也不见得有什么不正常,可是前几天我的cpu资源占用突然升高.查看进程,发现有一个postgres的进程占用CPU ...

  7. 连接postgres特别消耗cpu资源而引发的PostgreSQL性能优化考虑

    由于是开发阶段,所以并没有配置postgres的参数,都是使用安装时的默认配置,以前运行也不见得有什么不正常,可是前几天我的cpu资源占用突然升高.查看进程,发现有一个postgres的进程占用CPU ...

  8. 【原创】大叔经验分享(21)yarn中查看每个应用实时占用的内存和cpu资源

    在yarn中的application详情页面 http://resourcemanager/cluster/app/$applicationId 或者通过application命令 yarn appl ...

  9. Docker技术入门与实战 第二版-学习笔记-5-容器-命令及限制内存与cpu资源

    1.启动容器 启动容器有两种方式: 基于镜像新建一个容器并启动 将在终止状态(stopped)的容器重新启动 1)新建并启动——docker run 比如在启动ubuntu:14.04容器,并输出“H ...

随机推荐

  1. cp---复制文件

    cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录.它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下.cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文 ...

  2. 紫书 习题 10-17 UVa 11105 (筛法)

    类似于素数筛的思想去做,不然暴力会超时而且还要判重 #include<cstdio> #include<cstring> #include<vector> #def ...

  3. 控制div固定在页面的某个位置 ,用js感觉很麻烦 CSS更好一些

    CSS代码:<style type="text/css"> html,body { width:100%; height:100%; margin:0px; paddi ...

  4. Swift学习笔记(3)--基本运算符

    基本运行符: +(加法.正数) - (减法.负数) *  (乘法) / (除法) % (求余)  : 在Swift中,求余可以是浮点数求余. &&(逻辑与) || (逻辑或) ^ (逻 ...

  5. 【Henu ACM Round#14 D】Kefa and Dishes

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 状态压缩动规. 可以写成记忆化搜索的形式. f[bit][p] 表示选取的菜的情况为bit(用0..2^(N)-1的二进制形式表示各 ...

  6. 正确地在QML应用中使用fontsize

    我们知道我们有时须要显示text文本.可是,在QML应用中.我们应该怎样选择font的大小呢?在今天的这篇文章中,我们将展示在Ubuntu平台中的不同文字的大小.我们能够通过FontUtils来帮我们 ...

  7. jquery20--animate() : 运动的方法

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  8. 秀秀SolarWinds为网络工程师准备的工具

    SolarWinds Engineer's Toolset部分功能截图 650) this.width=650;" onclick='window.open("http://blo ...

  9. 游标 scroll

    scroll表示可随意移动游标指针(否则只能向前)

  10. deep-in-es6(一)

    一 迭代器和for-of循环 以前的一些遍历数组: function c(n) { console.log(n); } 方法一: for(let i = 0;i < arr.length;i++ ...