知行编程网知行编程网  2022-11-10 02:30 知行编程网 隐藏边栏  12 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于用Python来统计本机CPU利用率的相关知识,包括python获取cpu核数,以及台式机CPU这些编程知识,希望对大家有参考作用。

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

使用 Python 计算本机 CPU 利用率


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'\Memory\Committed 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

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享