Python使用psutil庫對系統數據進行采集監控的方法

大傢好,我是辰哥~

今天給大傢介紹一個可以獲取當前系統信息的庫——psutil

利用psutil庫可以獲取系統的一些信息,如cpu,內存等使用率,從而可以查看當前系統的使用情況,實時采集這些信息可以達到實時監控系統的目的。

psutil庫

psutil的安裝很簡單

pip install psutil

psutil庫可以獲取哪些系統信息?

psutil有哪些作用
1.內存使用情況
2.磁盤使用情況
3.cpu使用率
4.網絡接口發送接收流量
5.獲取當前網速
6.系統當前進程

下面通過具體代碼案例進行演示

內存使用情況

import psutil
#內存
mem = psutil.virtual_memory()
# 系統總計內存
zj = float(mem.total) / 1024 / 1024 / 1024
# 系統已經使用內存
ysy = float(mem.used) / 1024 / 1024 / 1024
# 系統空閑內存
kx = float(mem.free) / 1024 / 1024 / 1024
print('系統總計內存:%d.4GB' % zj)
print('系統已經使用內存:%d.4GB' % ysy)
print('系統空閑內存:%d.4GB' % kx)

獲取當前系統總內存,已使用內存,以及空閑內存

這裡獲取的內存是的單位是字節,所以需要通過除以1024轉為G,下面同樣如此就不再重復解釋。

獲取系統cpu信息

#顯示cpu所有邏輯信息
print(psutil.cpu_times(percpu=True))
# 查看cpu邏輯個數的信息
print(u"邏輯CPU個數: %s" % psutil.cpu_count())
# 查看cpu物理個數的信息
print(u"物理CPU個數: %s" % psutil.cpu_count(logical=False))
#CPU的使用率
cpu = (str(psutil.cpu_percent(1))) + '%'
print(u"cup使用率: %s" % cpu)

獲取cpu信息,以及本機cpu個數(包括邏輯cpu數和物理cpu數),當前的cpu使用率(每隔1秒獲取一次,獲取查看實時cpu使用率情況)

系統磁盤使用情況

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('系統總計磁盤:%d.3GB' % total)
print('系統已經使用磁盤:%d.3GB' % used)
print('系統空閑磁盤:%d.3GB' % free)
print(u"磁盤使用率: %s%%" % dk.percent)
# 獲取磁盤總的io個數,讀寫信息
print(psutil.disk_io_counters())

前面幾行是當前系統可以訪問的磁盤信息

其中第1行mountpoint=’/’,表示當前本機默認磁盤

其中第6行mountpoint=’/Volumes/Extreme SSD’,表示外接固態移動硬盤

這裡以本機磁盤mountpoint=’/’為例,查看磁盤的使用情況(總容量,已使用,空閑容量,使用率)

最後一行的每一個字段的含義如下:

"""
    read_count 讀IO數
    write_count 寫IO數
    read_bytes 讀IO字節數
    write_bytes 寫IO字節數
    read_time 磁盤讀時間
    write_time 磁盤寫時間
"""

獲取系統網卡信息

# 獲取網絡總IO信息
print(psutil.net_io_counters())
# 發送數據包
print("發送數據字節:", psutil.net_io_counters().bytes_sent,"bytes")
#接收數據包
print("接收數據字節:",psutil.net_io_counters().bytes_recv,"bytes")
# 輸出網絡每個接口信息
net_counter = psutil.net_io_counters(pernic=True)
for i in net_counter:
    print("網卡:"+i+" ,網卡信息:",net_counter[i])

可以獲取到當前本機中存在哪些網卡,以及發送和接收的流量是多少

通過在終端中查看本機的網卡是否一致

mac和linux系統命令:ifconfig

window系統命令:ipconfig

部分截圖如下:

可以看到程序獲取的網卡數據和本機終端獲取是一致的

獲取當前網速

通過上面的程序獲取網卡發送和接收的流量來獲取當前網速

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網卡的數據,因為辰哥本機的網卡是en0

最後可以看到獲取當前網速情況

每個1秒執行該代碼可以實現實時獲取網速

其他功能

# 系統開機時間
# 轉換成自然時間格式
print(datetime.datetime.fromtimestamp(psutil.boot_time ()).strftime("%Y-%m-%d %H: %M: %S"))
#獲取當前系統用戶登錄信息
users = psutil.users()
for i in users:
    print(i)

可以獲取到本機開機時間,以及當前使用的用戶

今天的文章就到這裡瞭

有任何疑問小夥伴們歡迎下方留言討論哈~

最後

1. 本文詳細介紹瞭python通過psutil獲取系統信息(內存,磁盤,cpu等)

2. 本文僅供讀者學習使用,不做其他用途!

耐得住寂寞,才能登得頂
Gitee碼雲:https://gitee.com/lyc96/projects

到此這篇關於Python使用psutil庫對系統數據進行采集監控的方法的文章就介紹到這瞭,更多相關Python psutil系統監控內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: