本文实例讲述了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程序设计有所帮助。