Python獲取CPU、內(nèi)存使用率以及網(wǎng)絡(luò)使用狀態(tài)代碼
更新時間:2018年02月08日 11:39:36 投稿:laozhang
這篇文章主要介紹了Python獲取CPU使用率、內(nèi)存使用率、網(wǎng)絡(luò)使用狀態(tài)的相關(guān)代碼,對此有需要的朋友一起測試下。
由于psutil已更新到3.0.1版本,最新的代碼如下:
#!/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
以上就是本次更新后的實例代碼,大家可以一起測試下,如果有其他問題可以在下方的留言區(qū)討論,感謝你對腳本之家的支持。
相關(guān)文章
如何導(dǎo)出python安裝的所有模塊名稱和版本號到文件中
Python 模塊(Module),是一個 Python 文件,以 .py 結(jié)尾,包含了 Python 對象定義和Python語句。這篇文章主要介紹了如何導(dǎo)出python安裝的所有模塊名稱和版本號到文件中,本文通過實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2020-06-06
python中Matplotlib實現(xiàn)繪制3D圖的示例代碼
本篇文章主要介紹了python中Matplotlib實現(xiàn)繪制3D圖的示例代碼,具有一定的參考價值,有興趣的可以了解一下2017-09-09
Python中TypeError: int object is not 
在Python中,當(dāng)你嘗試對一個非迭代對象(如整數(shù)、浮點數(shù)等)使用迭代操作(如for循環(huán)、列表推導(dǎo)式中的迭代等)時,會觸發(fā)TypeError: 'int' object is not iterable錯誤,所以本文給大家介紹了Python中TypeError: int object is not iterable錯誤分析及解決辦法2024-08-08
詳解Python如何在多層循環(huán)中使用break/continue
關(guān)于break/continue這兩個關(guān)鍵字在平常的使用過程中一直比較迷糊。所以本文將詳細(xì)講講Python如何在多層循環(huán)中使用break/continue,需要的可以參考一下2022-05-05
python人工智能tensorflow函數(shù)tf.get_collection使用方法
這篇文章主要為大家介紹了python人工智能tensorflow函數(shù)tf.get_collection使用方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05

