psutil(Process and System Utilities) 是一個用于獲取系統(tǒng)運(yùn)行狀態(tài)、監(jiān)控資源占用、管理系統(tǒng)進(jìn)程的 Python 第三方庫。它能夠跨平臺(Linux、Windows、macOS)訪問 CPU、內(nèi)存、磁盤、網(wǎng)絡(luò)、傳感器等硬件信息,并提供強(qiáng)大的進(jìn)程管理接口,是系統(tǒng)監(jiān)控、運(yùn)維自動化、性能分析、資源追蹤的重要工具之一。
該庫特別適用于構(gòu)建系統(tǒng)監(jiān)控服務(wù)、任務(wù)管理器、性能測試腳本、運(yùn)維檢測工具、安全審計系統(tǒng)等場景,因其穩(wěn)定、輕量且功能全面而被廣泛使用(例如 Glances 就基于 psutil)。
安裝 :
pip install psutil常見應(yīng)用場景:
(1)系統(tǒng)資源監(jiān)控
采集 CPU、內(nèi)存、磁盤、網(wǎng)絡(luò)等實(shí)時數(shù)據(jù),用于監(jiān)控面板展示、告警判斷、性能評估。
(2)進(jìn)程管理與監(jiān)控
查詢進(jìn)程列表、獲取資源占用、終止進(jìn)程、檢測僵尸進(jìn)程等,用于任務(wù)管理器或運(yùn)維腳本。
(3)性能分析與壓力測試
對程序運(yùn)行期間的系統(tǒng)數(shù)據(jù)進(jìn)行記錄,用于瓶頸分析和調(diào)優(yōu)。
(4)自動化運(yùn)維(DevOps)
檢查系統(tǒng)狀態(tài)、守護(hù)關(guān)鍵進(jìn)程、運(yùn)行環(huán)境探測等。
(5)安全審計與事件分析
追蹤可疑進(jìn)程、監(jiān)控網(wǎng)絡(luò)連接、查看運(yùn)行命令等。
◆ ◆ ◆
核心概念
1、系統(tǒng)指標(biāo)(System Metrics)
psutil 提供統(tǒng)一接口訪問各種硬件和系統(tǒng)狀態(tài),包括:
? CPU 使用率、核心數(shù)、頻率
? 內(nèi)存使用情況
? 磁盤讀寫與使用率
? 網(wǎng)絡(luò)流量與連接
? 傳感器數(shù)據(jù)(如溫度、風(fēng)扇)
這些數(shù)據(jù)可作為監(jiān)控指標(biāo)或分析輸入。
2、進(jìn)程對象(Process)
通過 psutil.Process(pid) 獲取操作系統(tǒng)進(jìn)程對象,可查詢:
? CPU 占用
? 內(nèi)存占用
? 打開的文件
? 線程與子進(jìn)程
? 網(wǎng)絡(luò)連接
命令行與啟動時間
? 也可執(zhí)行:
? terminate() 終止
? kill() 殺死
? suspend() 暫停
? resume() 恢復(fù)
3、跨平臺抽象(Cross-platform Abstraction)
psutil 將不同操作系統(tǒng)的底層 API 統(tǒng)一封裝,讓用戶使用相同的 API 獲取系統(tǒng)信息。
4、迭代解析(Iterative Process Scanning)
使用 process_iter() 可以高效遍歷所有進(jìn)程,可選返回特定字段,提高性能。
5、結(jié)構(gòu)化輸出
所有返回結(jié)果均為:
? 結(jié)構(gòu)體(類似 namedtuple)
? 字典
? 或自定義對象(如 Process)
方便直接用于監(jiān)控系統(tǒng)或持久化存儲。
◆ ◆ ◆
應(yīng)用舉例
例 1:獲取 CPU 和內(nèi)存狀態(tài)
print(psutil.virtual_memory())例 2:讀取磁盤與網(wǎng)絡(luò)信息
print(psutil.net_io_counters())例 3:列出所有進(jìn)程(返回精簡字段)
print(p.info)例 4:查詢并終止某個進(jìn)程
p.terminate()例 5:監(jiān)控網(wǎng)絡(luò)連接
print(c)◆ ◆ ◆
常用函數(shù)與類速覽
cpu_percent(interval=1, percpu=False)
獲取 CPU 使用率。
參數(shù):
interval:采樣時間(秒)。
percpu:是否返回每個核心的使用率。
返回:
浮點(diǎn)數(shù)或列表(百分比)。
cpu_count(logical=True)
返回 CPU 核心數(shù)量。
參數(shù):
logical:True 表示邏輯核心;False 獲取物理核心。
返回:整數(shù)。
disk_usage(path)
獲取磁盤使用情況。
參數(shù):
path:文件系統(tǒng)路徑。
返回:
包含 total / used / free / percent 的結(jié)構(gòu)化對象。
net_io_counters(pernic=False)
獲取網(wǎng)絡(luò)讀寫統(tǒng)計。
參數(shù):
pernic:是否按網(wǎng)卡返回。
返回:
網(wǎng)絡(luò) I/O 統(tǒng)計對象或字典。
Process(pid)
創(chuàng)建進(jìn)程對象,用于查詢與管理進(jìn)程。
參數(shù):
pid:進(jìn)程號。
返回:Process 實(shí)例。
Process().cpu_percent(interval=None)
獲取單個進(jìn)程 CPU 使用率。
參數(shù):
interval:采樣間隔(None 表示瞬時值)。
返回:浮點(diǎn)數(shù)(百分比)。
process_iter(attrs=None)
遍歷系統(tǒng)所有進(jìn)程。
參數(shù):
attrs:要返回的字段列表。
返回:
Process 對象迭代器。
virtual_memory()
獲取內(nèi)存使用情況。
參數(shù):無。
返回:
包含 total / available / percent 等字段的內(nèi)存對象。
◆ ◆ ◆
補(bǔ)充說明
(1)某些方法需要管理員權(quán)限,否則可能報錯或無法獲取完整信息。
(2)傳感器信息(溫度、風(fēng)扇等)因平臺不同支持程度不一致。
(3)高頻創(chuàng)建進(jìn)程對象開銷較大,可復(fù)用對象或減少查詢頻率。
(4)在大規(guī)模監(jiān)控場景中應(yīng)結(jié)合異步 I/O 或采樣策略以降低系統(tǒng)負(fù)載。
小結(jié)
psutil 是一款功能全面、跨平臺且高性能的系統(tǒng)監(jiān)控與進(jìn)程管理庫。它為 CPU、內(nèi)存、磁盤、網(wǎng)絡(luò)等資源的監(jiān)控提供了統(tǒng)一接口,同時具備強(qiáng)大進(jìn)程操作能力,適用于監(jiān)控平臺、運(yùn)維腳本、性能分析與系統(tǒng)管理工具等場景。
憑借簡單的 API 和豐富的功能,psutil 能有效提升系統(tǒng)分析與自動化管理效率,是 Python 開發(fā)者在系統(tǒng)級任務(wù)中不可或缺的工具。
![]()
“點(diǎn)贊有美意,贊賞是鼓勵”
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.