当前位置: 首页 > Python编程 > Python编程实战技能 > Python编程技术分享 > 用Python来统计本机CPU利用率

用Python来统计本机CPU利用率

发布时间:2020年09月27日 10:34:03 来源: 点击量:585

【摘要】模块win32pdh是Python中的一个模块,封装了Windows Performance Data Helpers API。win32pdh方法AddCounter添加一个新计数器AddEnglish

模块win32pdh是Python中的一个模块,封装了Windows Performance Data Helpers API。

win32pdh方法

AddCounter    添加一个新计数器 

AddEnglishCounter    通过英文名称为查询添加计数器 

RemoveCounter    删除一个打开的计数器。 

EnumObjectItems    枚举对象的项目 

EnumObjects    枚举对象 

OPENQUERY    打开一个新查询 

CloseQuery    关闭打开的查询。 

MakeCounterPath    制作完全解决的计数器路径 

GetCounterInfo    检索有关计数器的信息,例如数据大小,计数器类型,路径和用户提供的数据值。 

GetFormattedCounterValue    检索格式化的计数器值 

CollectQueryData    收集指定查询中所有计数器的当前原始数据值,并更新每个计数器的状态代码。 

ValidatePath    验证指定的计数器是否存在于计数器路径中指定的计算机上。 

ExpandCounterPath    检查指定的计算机(如果没有指定本地计算机),则检查与计数器路径中的通配符字符串匹配的计数器和计数器实例。 

ParseCounterPath    解析计数器路径的元素。 

ParseInstanceName    解析实例名称的元素 

SetCounterScaleFactor    设置在请求格式化计数器值时应用于指定计数器的计算值的比例因子。 

BrowseCounters    显示计数器浏览对话框,以便用户可以选择要返回给调用者的计数器。 

ConnectMachine    连接到指定的计算机,并在PDH DLL中创建和初始化计算机条目。 

LookupPerfIndexByName    返回与指定计数器名称对应的计数器索引。 

LookupPerfNameByIndex    返回与指定索引对应的性能对象名称。 

完整代码:python统计cpu利用率

#-*-coding=utf-8-*-
import win32pdh
import time
# Counter paths
PROCESSOR_PERCENT = r'Processor(_Total)% Processor Time'
MEMORY_PERCENT = r'Memory% Committed Bytes In Use'
MEMORY_COMMITTED = r'MemoryCommitted Bytes'
PROCESS_BYTES = lambda x: r'Process(%s)Private Bytes' % x
class Query:
  def __init__(self):
    self.counters = {}
    self.query = None
    self.query = win32pdh.OpenQuery(None, 0)
  def add_counter(self, path):
    if win32pdh.ValidatePath(path) != 0:
      raise Exception('Invalid path: %s' % path)
    counter = win32pdh.AddCounter(self.query, path, 0)
    self.counters[path] = counter
  def remove_counter(self, path):
    win32pdh.RemoveCounter(self.counters[path])
    del self.counters[path]
  def get_values(self):
    values = {}
    win32pdh.CollectQueryData(self.query)
    for path in self.counters:
      status, value = win32pdh.GetFormattedCounterValue(
          self.counters[path], win32pdh.PDH_FMT_LONG)
      values[path] = value
    return values
sysinfo_query = Query()
sysinfo_query.add_counter(PROCESSOR_PERCENT)
sysinfo_query.add_counter(MEMORY_PERCENT)
sysinfo_query.get_values()
def get_sysinfo():
  """Return a tuple (mem_usage, cpu_usage)."""
  info = sysinfo_query.get_values()
  return info[MEMORY_PERCENT], info[PROCESSOR_PERCENT]
listcpu=[]
while True:
  time.sleep(2)
  x,y=get_sysinfo()
  listcpu.append(y)
  if len(listcpu)==10:
    icount=0
    for c in listcpu:
      if c>4:
        icount+=1
    if icount>5:
      print "在统计的1分钟内,cpu已经有5次大于4%"
    listcpu=[]
  print y

分享到: 编辑:wangmin

就业培训申请领取
您的姓名
您的电话
意向课程
点击领取

环球青藤

官方QQ

扫描上方二维码或点击一键加群,免费领取大礼包,加群暗号:青藤。 一键加群

绑定手机号

应《中华人民共和国网络安全法》加强实名认证机制要求,同时为更加全面的体验产品服务,烦请您绑定手机号.

预约成功

本直播为付费学员的直播课节

请您购买课程后再预约

环球青藤移动课堂APP 直播、听课。职达未来!

安卓版

下载

iPhone版

下载
环球青藤官方微信服务平台

刷题看课 APP下载

免费直播 一键购课

代报名等人工服务

课程咨询 学员服务 公众号

扫描关注微信公众号

APP

扫描下载APP

返回顶部