本文实例讲述了python统计cpu利用率的方法。分享给大家供大家参考。具体实现方法如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
#-*-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程序设计有所帮助。