python统计cpu利用率的方法

1060次阅读  |  发布于5年以前

本文实例讲述了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

希望本文所述对大家的Python程序设计有所帮助。

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8