python统计cpu的利用率,pythoncpu利用率,#-*-coding=u


#-*-coding=utf-8-*-import win32pdhimport time# Counter pathsPROCESSOR_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' % xclass 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 valuessysinfo_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

评论关闭