gpt4 book ai didi

Python获取CPU、内存使用率以及网络使用状态代码

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 24 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Python获取CPU、内存使用率以及网络使用状态代码由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

由于psutil已更新到3.0.1版本,最新的代码如下:

?
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#!/usr/bin/env python
 
import os
import time
import sys
import atexit
import psutil
 
#print "Welcome,current system is",os.name," 3 seconds late start to get data"
time.sleep( 3 )
 
line_num = 1
 
#function of Get cpu state
def getCPUstate(interval = 1 ):
   return ( " CPU:" + str (psutil.cpu_percent(interval)) + "%" )
 
def getMemorystate():
   phymem = psutil.virtual_memory()
   line = "Memory: %5s%% %6s/%s" % (
       phymem.percent,
       str ( int (phymem.used / 1024 / 1024 )) + "M" ,
       str ( int (phymem.total / 1024 / 1024 )) + "M"
       )
   return line
def bytes2human(n):
   """
   >>>bytes2human(10000)
   '9.8k'
   >>>bytes2human(100001221)
   '95.4M'
   """
   symbols = ( 'K' , 'M' , 'G' , 'T' , 'P' , 'E' , 'Z' , 'Y' )
   prefix = {}
   for i ,s in enumerate (symbols):
     prefix[s] = 1 << (i + 1 ) * 10
   for s in reversed (symbols):
     if n > = prefix[s]:
       value = float (n) / prefix[s]
       return '%.2f %s' % (value,s)
   return '%.2fB' % (n)
def poll(interval):
   """Retrieve raw stats within an interval window."""
   tot_before = psutil.net_io_counters()
   pnic_before = psutil.net_io_counters(pernic = True )
   #sleep some time
   time.sleep(interval)
   tot_after = psutil.net_io_counters()
   pnic_after = psutil.net_io_counters(pernic = True )
   #get cpu stats
   cpu_state = getCPUstate(interval)
   #get memory
   memory_state = getMemorystate()
   return (tot_before,tot_after,pnic_before,pnic_after,cpu_state,memory_state)
def refresh_window(tot_before,tot_after,pnic_before,pnic_after,cpu_state,memory_state):
   """print stats on screen"""
   #print current time,cpu state,memory
   print (time.asctime() + " | " + cpu_state + " | " +
       memory_state)
   #total
   print ( " NetStates:" )
   print ( " total bytes: sent: %-10s received: %s" % (\
     bytes2human(tot_after.bytes_sent), \
     bytes2human(tot_after.bytes_recv)))
   print ( " total packets: sent: %-10s received: %s" % (\
     tot_after.packets_sent,\
     tot_after.packets_recv))
   # per-network interface details: let's sort network interfaces so 
   # that the ones which generated more traffic are shown first
   print ( " " )
   nic_names = pnic_after.keys()
   #nic_names.sort(key=lambda x: sum(pnic_after[x]), reverse=True)
   for name in nic_names:
     stats_before = pnic_before[name]
     stats_after = pnic_after[name]
     templ = "%-15s %15s %15s"
     print (templ % (name, "TOTAL" , "PER-SEC" ))
     print (templ % (
       "bytes-sent"
       bytes2human(stats_after.bytes_sent),
       bytes2human(stats_after.bytes_sent - stats_before.bytes_sent) +
       '/s' ,
       ))
     print (templ %
       "bytes-recv"
       bytes2human(stats_after.bytes_recv), 
       bytes2human(stats_after.bytes_recv - stats_before.bytes_recv)
       + '/s'
       ))
     print (templ % (
       "pkts-sent" ,
       stats_after.packets_sent,
       stats_after.packets_sent - stats_before.packets_sent,
       ))
     print ((templ % (
       "pkts-recv" ,
       stats_after.packets_recv,
       stats_after.packets_recv - stats_before.packets_recv,
       )))
     print ( " " )
try :
   interval = 0
   while 1 :
     args = poll(interval)
     refresh_window( * args)
     interval = 1
except (KeyboardInterrupt,SystemExit):
   pass

以上就是本次更新后的实例代码,大家可以一起测试下,如果有其他问题可以在下方的留言区讨论,感谢你对我的支持.

最后此篇关于Python获取CPU、内存使用率以及网络使用状态代码的文章就讲到这里了,如果你想了解更多关于Python获取CPU、内存使用率以及网络使用状态代码的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com