Python使用psutil對系統資料進行採集監控

2022-09-25 05:39:10 字數 3267 閱讀 5075

目錄

今天給大家介紹乙個可以獲取當前系統資訊的庫——psutil

利用psutil庫可以獲取系統的一些資訊,如cpu,記憶體等使用率,從而可以檢視當前系統的使用情況,實時採集這些資訊可以達到實時監控系統的目的。

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所有邏輯資訊

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 partdoxnbhlql:

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行mountp程式設計客棧oint='/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 udoxnbhlqlsers:

print(i)

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

python監控模組psutil基本使用

1.安裝psutil pip install psutil 2.基本使用 監控工具 import psutil import datetime def getmem info 記憶體資訊 mem psutil.virtual memory print 總記憶體 mem.total 1024 1024...

python工作學習(psutil庫使用)

pids psutil.process iter 迭代時由於許可權問題可能出現無法獲取到程序資訊的情況,導致迭代失敗,需要通過管理員許可權執行py指令碼才可以順利獲取。如下 usr bin python encoding utf 8 import os import sys import strin...

python中使用psutil檢視記憶體占用

有的時候需要對python程式記憶體占用進行監控,這個時候可以用到psutil庫,anaconda中是自帶的,如果import出錯,可以用pip install psutil 安裝在python中 或conda install psutil 安裝在anaconda中 常用的 import psuti...