Python使用psutil庫對系統(tǒng)數(shù)據(jù)進(jìn)行采集監(jiān)控的方法
大家好,我是辰哥~
今天給大家介紹一個可以獲取當(dāng)前系統(tǒng)信息的庫——psutil
利用psutil庫可以獲取系統(tǒng)的一些信息,如cpu,內(nèi)存等使用率,從而可以查看當(dāng)前系統(tǒng)的使用情況,實時采集這些信息可以達(dá)到實時監(jiān)控系統(tǒng)的目的。
psutil庫
psutil的安裝很簡單
pip install psutil
psutil庫可以獲取哪些系統(tǒng)信息?
psutil有哪些作用
1.內(nèi)存使用情況
2.磁盤使用情況
3.cpu使用率
4.網(wǎng)絡(luò)接口發(fā)送接收流量
5.獲取當(dāng)前網(wǎng)速
6.系統(tǒng)當(dāng)前進(jìn)程
...
下面通過具體代碼案例進(jìn)行演示
內(nèi)存使用情況
import psutil #內(nèi)存 mem = psutil.virtual_memory() # 系統(tǒng)總計內(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)總計內(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é),所以需要通過除以1024轉(zhuǎn)為G,下面同樣如此就不再重復(fù)解釋。
獲取系統(tǒng)cpu信息
#顯示cpu所有邏輯信息 print(psutil.cpu_times(percpu=True)) # 查看cpu邏輯個數(shù)的信息 print(u"邏輯CPU個數(shù): %s" % psutil.cpu_count()) # 查看cpu物理個數(shù)的信息 print(u"物理CPU個數(shù): %s" % psutil.cpu_count(logical=False)) #CPU的使用率 cpu = (str(psutil.cpu_percent(1))) + '%' print(u"cup使用率: %s" % cpu)
獲取cpu信息,以及本機(jī)cpu個數(shù)(包括邏輯cpu數(shù)和物理cpu數(shù)),當(dāng)前的cpu使用率(每隔1秒獲取一次,獲取查看實時cpu使用率情況)
系統(tǒng)磁盤使用情況
part = psutil.disk_partitions() for i in part: print(i) dk = psutil.disk_usage('/') print(dk) #總磁盤 total = dk.total / 1024 / 1024 / 1024 used = dk.used / 1024 / 1024 / 1024 free = dk.free / 1024 / 1024 / 1024 print('系統(tǒng)總計磁盤:%d.3GB' % total) print('系統(tǒng)已經(jīng)使用磁盤:%d.3GB' % used) print('系統(tǒng)空閑磁盤:%d.3GB' % free) print(u"磁盤使用率: %s%%" % dk.percent) # 獲取磁盤總的io個數(shù),讀寫信息 print(psutil.disk_io_counters())
前面幾行是當(dāng)前系統(tǒng)可以訪問的磁盤信息
其中第1行mountpoint='/',表示當(dāng)前本機(jī)默認(rèn)磁盤
其中第6行mountpoint='/Volumes/Extreme SSD',表示外接固態(tài)移動硬盤
這里以本機(jī)磁盤mountpoint='/'為例,查看磁盤的使用情況(總?cè)萘?,已使用,空閑容量,使用率)
最后一行的每一個字段的含義如下:
""" read_count 讀IO數(shù) write_count 寫IO數(shù) read_bytes 讀IO字節(jié)數(shù) write_bytes 寫IO字節(jié)數(shù) read_time 磁盤讀時間 write_time 磁盤寫時間 """
獲取系統(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ò)每個接口信息 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ā)送和接收的流量是多少
通過在終端中查看本機(jī)的網(wǎng)卡是否一致
mac和linux系統(tǒng)命令:ifconfig
window系統(tǒng)命令:ipconfig
部分截圖如下:
可以看到程序獲取的網(wǎng)卡數(shù)據(jù)和本機(jī)終端獲取是一致的
獲取當(dāng)前網(wǎng)速
通過上面的程序獲取網(wǎng)卡發(fā)送和接收的流量來獲取當(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ù),因為辰哥本機(jī)的網(wǎng)卡是en0
最后可以看到獲取當(dāng)前網(wǎng)速情況
每個1秒執(zhí)行該代碼可以實現(xiàn)實時獲取網(wǎng)速
其他功能
# 系統(tǒng)開機(jī)時間 # 轉(zhuǎn)換成自然時間格式 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ī)開機(jī)時間,以及當(dāng)前使用的用戶
今天的文章就到這里了
有任何疑問小伙伴們歡迎下方留言討論哈~
最后
1. 本文詳細(xì)介紹了python通過psutil獲取系統(tǒng)信息(內(nèi)存,磁盤,cpu等)
2. 本文僅供讀者學(xué)習(xí)使用,不做其他用途!
耐得住寂寞,才能登得頂
Gitee碼云:https://gitee.com/lyc96/projects
到此這篇關(guān)于Python使用psutil庫對系統(tǒng)數(shù)據(jù)進(jìn)行采集監(jiān)控的方法的文章就介紹到這了,更多相關(guān)Python psutil系統(tǒng)監(jiān)控內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python的構(gòu)建工具setup.py的方法使用示例
本篇文章主要介紹了python的構(gòu)建工具setup.py的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10python中根據(jù)字符串調(diào)用函數(shù)的實現(xiàn)方法
下面小編就為大家?guī)硪黄猵ython中根據(jù)字符串調(diào)用函數(shù)的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考,一起跟隨小編過來看看吧2016-06-06用Python寫飛機(jī)大戰(zhàn)游戲之pygame入門(4):獲取鼠標(biāo)的位置及運動
這篇文章主要介紹了用Python寫飛機(jī)大戰(zhàn)游戲之pygame入門(4):獲取鼠標(biāo)的位置及運動,需要的朋友可以參考下2015-11-11淺談python中的__init__、__new__和__call__方法
這篇文章主要給大家介紹了關(guān)于python中__init__、__new__和__call__方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考學(xué)習(xí),下面來跟著小編一起看看吧。2017-07-07Python+Flask實現(xiàn)自定義分頁的示例代碼
分頁操作在web開發(fā)中幾乎是必不可少的,而flask不像django自帶封裝好的分頁操作。所以本文將自定義實現(xiàn)分頁效果,需要的可以參考一下2022-09-09Python?gRPC流式通信協(xié)議詳細(xì)講解
這篇文章主要介紹了Python?gRPC流式通信協(xié)議,最近幾天在搞golang的grpc,跑通之后想用php作為客戶端調(diào)用一下grpc服務(wù),結(jié)果拉了,一個php的grpc服務(wù)安裝,搞了好幾天,總算搞定了2022-11-11pytest解讀fixtures中yield與addfinalizer區(qū)別
這篇文章主要為大家介紹了pytest官方解讀fixtures中yield與addfinalizer區(qū)別,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06Python+OpenCV目標(biāo)跟蹤實現(xiàn)基本的運動檢測
這篇文章主要為大家詳細(xì)介紹了Python+OpenCV目標(biāo)跟蹤實現(xiàn)基本的運動檢測,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-07-07