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
来源: http://www.phpxs.com/code/1004998/