人生苦短,快學Python!
請關注系列文章——有用有趣的 Python庫!
今天介紹的是psutil模塊,它是一個跨平臺庫(https://github.com/giampaolo/psutil),
命令列下通過pip安裝:
pip install psutil
如果跟我一樣安裝的是Anaconda,則剩下這步了,因為自帶了,
顧名思義,psutil = process and system utilities,它專門用來獲取作業系統以及硬體相關的資訊,比如:CPU、記憶體、磁盤、網路、行程管理等,
今天這篇文章,就來給大家介紹一下其常用功能和使用方法,
查詢CPU資訊
先匯入psutil模塊,獲取CPU的資訊資料,
import psutil
# CPU邏輯數量
psutil.cpu_count()
# CPU物理核心
psutil.cpu_count(logical=False)
# 統計CPU的用戶/系統/空閑時間
psutil.cpu_times()
# interval:每隔0.5s重繪一次
# percpu:查看所有的cpu使用率
for x in range(5):
print(psutil.cpu_percent(interval=0.5, percpu=True))
輸出結果:

注:大家如果對jupyter notebook 同時輸出多個變數感興趣,可以查看這篇文章《Jupyter Notebook使用技巧:輕松輸出多個變數》
查詢記憶體資訊
輸出記憶體使用情況(總記憶體、可用記憶體、記憶體使用率、已使用記憶體),
psutil.virtual_memory()

比如上面輸出的total=16499146752即為總記憶體16G,已使用記憶體/總記憶體= 76.0%(記憶體使用率),
查詢磁盤資訊
可以通過psutil獲取磁盤磁區、磁盤使用率和磁盤IO資訊,
# 磁盤磁區資訊
psutil.disk_partitions()
# 磁盤使用情況
psutil.disk_usage('/')
# 磁盤IO
psutil.disk_io_counters()

其中,回傳的IO資訊指標有👉
磁盤IO資訊read_count(讀IO數)、write_count(寫IO數)、read_bytes(IO寫位元組數)、read_time(磁盤讀時間)、write_time(磁盤寫時間),
查詢網路資訊
使用psutil庫查詢網路讀寫位元組/包的個數,
psutil.net_io_counters()

其中,回傳的資料指標有👉
- btes_sent: 發送的位元組數
- bytes_recv: 接收的位元組數
- packets_sent: 發送的包資料量
- packets_recv: 接收的包資料量
- errin: 接收包時, 出錯的次數
- errout: 發送包時, 出錯的次數
- dropin: 接收包時, 丟棄的次數
- dropout: 發送包時, 丟棄的次數
除此以外,還有很多獲取網路介面和網路連接資訊的函式,
比如用psutil.net_if_addrs()獲取網路介面資訊,用psutil.net_if_stats()獲取網路介面狀態等,
查詢行程資訊
最后,使用psutil模塊也能獲取所有行程的詳細資訊資料!
psutil.pids() # 所有行程ID

回傳的結果包括了所有行程的ID(pid),
根據 pid 可以獲取一個行程對應的 Process 物件,而這個物件里面包含了該行程的全部資料,
下面我們指定行程ID=113408,其實就是當前Python互動環境,來獲取該行程的資訊,
# 獲取指定行程ID=113408,其實就是當前Python互動環境
p = psutil.Process(113408)
# 行程名稱
p.name()
# 行程的exe路徑
p.exe()
# 行程的作業目錄
p.cwd()
# 行程啟動的命令列
p.cmdline()
# 當前行程id
p.pid

總而言之,psutil使得我們可以輕松用Python程式獲取各類系統資訊,
本文只介紹了該模塊的安裝和基本使用方法,后續大家想了解更多詳情,可以參考psutil的官網:https://github.com/giampaolo/psutil
請關注我最近寫的系列文章——有用有趣的 Python庫!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/296593.html
標籤:python
