簡介:psutil(進程和系統實用程序)是一個跨平臺庫,用于檢索Python中運行進程和系統利用率(CPU、內存、磁盤、網絡、傳感器)的信息。它主要用于系統監視、分析和限制進程資源以及管理正在運行的進程。它實現了經典UNIX命令行工具提供的許多功能,如ps、top、iotop、lsof、netstat、ifconfig、free等。
支持的平臺:Linux、Windows、macOS、FreeBSD, OpenBSD, NetBSD、Sun Solaris、AIX等平臺。
安裝:
pip install psutil
用戶系統信息:
import psutil
import datetime
print("當前用戶:", psutil.users())
print("當前系統時間:", psutil.boot_time()) # 以時間戳格式返回)
print(datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H: %M: %S")) # 轉換成自然時間格式
內存信息:
mem = psutil.virtual_memory()
print("系統內存全部信息:", mem)
mem_total = float(mem.total)
mem_used = float(mem.used)
mem_free = float(mem.free)
mem_percent = float(mem.percent)
print(f"系統總計內存:{mem_total}")
print(f"系統已經使用內存:{mem_used}")
print(f"系統空閑內存:{mem_free}")
print(f"系統內存使用率:{mem_percent}")
CPU信息:
print("CPU匯總信息:", psutil.cpu_times())
print("cpu邏輯個數:", psutil.cpu_count())
print("swap內存信息:", psutil.swap_memory())
磁盤信息:
print("獲取磁盤的完整信息:", psutil.disk_partitions())
print("獲取分區表的參數:", psutil.disk_usage('/')) # 獲取/分區的狀態
print("獲取硬盤IO總個數:", psutil.disk_io_counters())
print("獲取單個分區IO個數:", psutil.disk_io_counters(perdisk=True)) # perdisk=True參數獲取單個分區IO個數
網絡信息:
print("獲取網絡總IO信息:", psutil.net_io_counters())
系統進程管理信息:
print("查看系統全部進程:", psutil.pids())
單個進程的詳細信息:
pid_info = psutil.Process(1200)
print(pid_info.name()) # 進程名
print(pid_info.exe()) # 進程的bin路徑
print(pid_info.status()) # 進程狀態
print(pid_info.create_time()) # 進程創建時間
print(pid_info.cpu_times()) # 進程的cpu時間信息,包括user,system兩個cpu信息
print(pid_info.memory_percent()) # 進程內存利用率
print(pid_info.memory_info()) # 進程內存rss,vms信息
print(pid_info.io_counters()) # 進程的IO信息,包括讀寫IO數字及參數
print(pid_info.num_threads()) # 進程開啟的線程數
源碼:
import psutil
import datetime
# 用戶,系統相關:
print("當前用戶:", psutil.users())
print("當前系統時間:", psutil.boot_time()) # 以linux時間格式返回)
print(datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H: %M: %S")) # 轉換成自然時間格式
# 內存相關:
mem = psutil.virtual_memory()
print("系統內存全部信息:", mem)
mem_total = float(mem.total)
mem_used = float(mem.used)
mem_free = float(mem.free)
mem_percent = float(mem.percent)
print(f"系統總計內存:{mem_total}")
print(f"系統已經使用內存:{mem_used}")
print(f"系統空閑內存:{mem_free}")
print(f"系統內存使用率:{mem_percent}")
# CPU相關:
print("CPU匯總信息:", psutil.cpu_times())
print("cpu邏輯個數:", psutil.cpu_count())
print("swap內存信息:", psutil.swap_memory())
# 磁盤相關:
print("獲取磁盤的完整信息:", psutil.disk_partitions())
print("獲取分區表的參數:", psutil.disk_usage('/')) # 獲取/分區的狀態
print("獲取硬盤IO總個數:", psutil.disk_io_counters())
print("獲取單個分區IO個數:", psutil.disk_io_counters(perdisk=True)) # perdisk=True參數獲取單個分區IO個數
# 網絡相關:
print("獲取網絡總IO信息:", psutil.net_io_counters())
# 系統進程管理:
print("查看系統全部進程:", psutil.pids())
# 單個進程的詳細信息:
pid_info = psutil.Process(1200)
print(pid_info.name()) # 進程名
print(pid_info.exe()) # 進程的bin路徑
print(pid_info.status()) # 進程狀態
print(pid_info.create_time()) # 進程創建時間
print(pid_info.cpu_times()) # 進程的cpu時間信息,包括user,system兩個cpu信息
print(pid_info.memory_percent()) # 進程內存利用率
print(pid_info.memory_info()) # 進程內存rss,vms信息
print(pid_info.io_counters()) # 進程的IO信息,包括讀寫IO數字及參數
print(pid_info.num_threads()) # 進程開啟的線程數
運行結果:
圖片
微信公眾號:玩轉測試開發
歡迎關注,共同進步,謝謝!