Python使用psutil對(duì)系統(tǒng)數(shù)據(jù)進(jìn)行采集監(jiān)控
今天給大家介紹一個(gè)可以獲取當(dāng)前系統(tǒng)信息的庫(kù)——psutil
利用psutil庫(kù)可以獲取系統(tǒng)的一些信息,如cpu,內(nèi)存等使用率,從而可以查看當(dāng)前系統(tǒng)的使用情況,實(shí)時(shí)采集這些信息可以達(dá)到實(shí)時(shí)監(jiān)控系統(tǒng)的目的。
psutil庫(kù)
psutil的安裝很簡(jiǎn)單
pip install psutil
psutil庫(kù)可以獲取哪些系統(tǒng)信息?
psutil有哪些作用
1.內(nèi)存使用情況
2.磁盤(pán)使用情況
3.cpu使用率
4.網(wǎng)絡(luò)接口發(fā)送接收流量
5.獲取當(dāng)前網(wǎng)速
6.系統(tǒng)當(dāng)前進(jìn)程
...下面通過(guò)具體代碼案例進(jìn)行演示
內(nèi)存使用情況
import psutil #內(nèi)存 mem = psutil.virtual_memory() # 系統(tǒng)總計(jì)內(nèi)存 zj = float(mem.total) / 1024 / 1024 / 1024 # 系統(tǒng)已經(jīng)使用內(nèi)存 ysy = float(mem.used) / 1024 / 1024 / 1024 # 系統(tǒng)空閑內(nèi)存 kx = float(mem.free) / 1024 / 1024 / 1024 print('系統(tǒng)總計(jì)內(nèi)存:%d.4GB' % zj) print('系統(tǒng)已經(jīng)使用內(nèi)存:%d.4GB' % ysy) print('系統(tǒng)空閑內(nèi)存:%d.4GB' % kx)
獲取當(dāng)前系統(tǒng)總內(nèi)存,已使用內(nèi)存,以及空閑內(nèi)存
這里獲取的內(nèi)存是的單位是字節(jié),所以需要通過(guò)除以1024轉(zhuǎn)為G,下面同樣如此就不再重復(fù)解釋。
獲取系統(tǒng)cpu信息
#顯示cpu所有邏輯信息 print(psutil.cpu_times(percpu=True)) # 查看cpu邏輯個(gè)數(shù)的信息 print(u"邏輯CPU個(gè)數(shù): %s" % psutil.cpu_count()) # 查看cpu物理個(gè)數(shù)的信息 print(u"物理CPU個(gè)數(shù): %s" % psutil.cpu_count(logical=False)) #CPU的使用率 cpu = (str(psutil.cpu_percent(1))) + '%' print(u"cup使用率: %s" % cpu)
獲取cpu信息,以及本機(jī)cpu個(gè)數(shù)(包括邏輯cpu數(shù)和物理cpu數(shù)),當(dāng)前的cpu使用率(每隔1秒獲取一次,獲取查看實(shí)時(shí)cpu使用率情況)
系統(tǒng)磁盤(pán)使用情況
part = psutil.disk_partitions() for i in part: print(i) dk = psutil.disk_usage('/') print(dk) #總磁盤(pán) total = dk.total / 1024 / 1024 / 1024 used = dk.used / 1024 / 1024 / 1024 free = dk.free / 1024 / 1024 / 1024 print('系統(tǒng)總計(jì)磁盤(pán):%d.3GB' % total) print('系統(tǒng)已經(jīng)使用磁盤(pán):%d.3GB' % used) print('系統(tǒng)空閑磁盤(pán):%d.3GB' % free) print(u"磁盤(pán)使用率: %s%%" % dk.percent) # 獲取磁盤(pán)總的io個(gè)數(shù),讀寫(xiě)信息 print(psutil.disk_io_counters())
前面幾行是當(dāng)前系統(tǒng)可以訪問(wèn)的磁盤(pán)信息
其中第1行mountpoint='/',表示當(dāng)前本機(jī)默認(rèn)磁盤(pán)
其中第6行mountpoint='/Volumes/Extreme SSD',表示外接固態(tài)移動(dòng)硬盤(pán)
這里以本機(jī)磁盤(pán)mountpoint='/'為例,查看磁盤(pán)的使用情況(總?cè)萘?,已使用,空閑容量,使用率)
最后一行的每一個(gè)字段的含義如下:
"""
read_count 讀IO數(shù)
write_count 寫(xiě)IO數(shù)
read_bytes 讀IO字節(jié)數(shù)
write_bytes 寫(xiě)IO字節(jié)數(shù)
read_time 磁盤(pán)讀時(shí)間
write_time 磁盤(pán)寫(xiě)時(shí)間
"""
獲取系統(tǒng)網(wǎng)卡信息
# 獲取網(wǎng)絡(luò)總IO信息 print(psutil.net_io_counters()) # 發(fā)送數(shù)據(jù)包 print("發(fā)送數(shù)據(jù)字節(jié):", psutil.net_io_counters().bytes_sent,"bytes") #接收數(shù)據(jù)包 print("接收數(shù)據(jù)字節(jié):",psutil.net_io_counters().bytes_recv,"bytes") # 輸出網(wǎng)絡(luò)每個(gè)接口信息 net_counter = psutil.net_io_counters(pernic=True) for i in net_counter: print("網(wǎng)卡:"+i+" ,網(wǎng)卡信息:",net_counter[i])
可以獲取到當(dāng)前本機(jī)中存在哪些網(wǎng)卡,以及發(fā)送和接收的流量是多少
通過(guò)在終端中查看本機(jī)的網(wǎng)卡是否一致
mac和linux系統(tǒng)命令:ifconfig
window系統(tǒng)命令:ipconfig
部分截圖如下:
可以看到程序獲取的網(wǎng)卡數(shù)據(jù)和本機(jī)終端獲取是一致的
獲取當(dāng)前網(wǎng)速
通過(guò)上面的程序獲取網(wǎng)卡發(fā)送和接收的流量來(lái)獲取當(dāng)前網(wǎng)速
s1 = psutil.net_io_counters(pernic=True)['en0'] time.sleep(1) s2 = psutil.net_io_counters(pernic=True)['en0'] result = s2.bytes_recv - s1.bytes_recv print(str('%d' % (result / 1024)) + 'kb/s')
代碼中的['en0']表示獲取en0網(wǎng)卡的數(shù)據(jù),因?yàn)槌礁绫緳C(jī)的網(wǎng)卡是en0
最后可以看到獲取當(dāng)前網(wǎng)速情況
每個(gè)1秒執(zhí)行該代碼可以實(shí)現(xiàn)實(shí)時(shí)獲取網(wǎng)速
其他功能
# 系統(tǒng)開(kāi)機(jī)時(shí)間 # 轉(zhuǎn)換成自然時(shí)間格式 print(datetime.datetime.fromtimestamp(psutil.boot_time ()).strftime("%Y-%m-%d %H: %M: %S")) #獲取當(dāng)前系統(tǒng)用戶登錄信息 users = psutil.users() for i in users: print(i)
可以獲取到本機(jī)開(kāi)機(jī)時(shí)間,以及當(dāng)前使用的用戶
以上就是Python使用psutil對(duì)系統(tǒng)數(shù)據(jù)進(jìn)行采集監(jiān)控的詳細(xì)內(nèi)容,更多關(guān)于python使用psutil對(duì)系統(tǒng)數(shù)據(jù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
讓python json encode datetime類(lèi)型
python2.6+ 自帶的json模塊,不支持datetime的json encode,每次都需要手動(dòng)轉(zhuǎn)為字符串,很累人,我們可以自己封裝一個(gè)簡(jiǎn)單的方法處理此問(wèn)題。2010-12-12Python實(shí)現(xiàn)鏈表反轉(zhuǎn)的方法分析【迭代法與遞歸法】
這篇文章主要介紹了Python實(shí)現(xiàn)鏈表反轉(zhuǎn)的方法,結(jié)合實(shí)例形式分析了Python迭代法與遞歸法實(shí)現(xiàn)鏈表反轉(zhuǎn)的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2020-02-02python多進(jìn)程 主進(jìn)程和子進(jìn)程間共享和不共享全局變量實(shí)例
這篇文章主要介紹了python多進(jìn)程 主進(jìn)程和子進(jìn)程間共享和不共享全局變量實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04Python?pip安裝庫(kù)時(shí)存在緩存以及清除方法
這篇文章主要給大家介紹了關(guān)于Python?pip安裝庫(kù)時(shí)存在緩存以及清除方法的相關(guān)資料,我們?cè)诎惭bPython庫(kù)時(shí),是安裝版的話一般都通過(guò)?pip?install?xxx?來(lái)安裝包,但安裝下載的文件都會(huì)緩存下來(lái),而且一般都在C盤(pán),需要的朋友可以參考下2023-08-08簡(jiǎn)單的命令查看安裝的python版本號(hào)
在本篇內(nèi)容里小編給大家整理的是關(guān)于簡(jiǎn)單的命令查看安裝的python版本號(hào)的文章,需要的朋友們可以參考下。2020-08-08python學(xué)習(xí)基礎(chǔ)之循環(huán)import及import過(guò)程
python中的import語(yǔ)句是用來(lái)導(dǎo)入模塊的,下面這篇文章主要給大家介紹了關(guān)于python學(xué)習(xí)基礎(chǔ)之循環(huán)import及import過(guò)程的相關(guān)資料,需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-04-04關(guān)于numpy.where()函數(shù) 返回值的解釋
今天小編就為大家分享一篇關(guān)于numpy.where()函數(shù) 返回值的解釋?zhuān)哂泻芎玫膮⒖純r(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12關(guān)于python中readlines函數(shù)的參數(shù)hint的相關(guān)知識(shí)總結(jié)
今天給大家?guī)?lái)的是關(guān)于Python函數(shù)的相關(guān)知識(shí),文章圍繞著python中readlines函數(shù)的參數(shù)hint展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06利用Rust實(shí)現(xiàn)Python加速的技巧分享
這篇文章主要想來(lái)和大家一起探討一下關(guān)于使用Rust對(duì)Python計(jì)算進(jìn)行加速的問(wèn)題,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-09-09