psutil
能夠輕松實現獲取系統運行的進程和系統利用率
安裝、導入模塊
pip install psutil # 安裝
import psutils # 導入
獲取系統性能信息
CPU信息
1.使用cpu_times()方法獲取CPU的完整信息:
psutil.cpu_times()
---------------------------------------------------------------------------------------
scputimes(user=15606.75, system=14908.984374999942, idle=323725.765625, interrupt=685.906
25, dpc=571.21875)
2.獲取單項數據,例如用戶user的CPU時間比:
psutil.cpu_times().user
3.獲取CPU的個數:
psutil.cpu_count() # 默認logical=True,獲取邏輯個數
psutil.cpu_count(logical=False) # 獲取CPU的物理個數
內存信息
獲取物理內存總大小和已使用內存:
mem = psutil.virtual_memory()
mem # 顯示所有的參數,svmem(total=8494747648, available=3692544000, percent=56.5, used=4802203648, free=3692544000)
mem.total # 總內存
mem.used # 已使用內存
m.free # 獲取空閑內存數
psutil.swap_memory() # 獲取SWAP分區信息,sswap(total=12118626304, used=8851152896, free=3267473408, percent=73.0, sin=0, sout=0)
磁盤信息
磁盤IO信息包括read_count(讀IO數),write_count(寫IO數),read_bytes(IO寫字節數),read_time(磁盤讀時間),write_time(磁盤寫時間)
1.獲取磁盤完整信息:
psutil.disk_partitions()
2.獲取分區的使用情況:
psutil.disk_usage('C:/') # 里面參數為所在磁盤分區,獲取分區表信息,sdiskusage(total=129393225728, used=82884608000, free=46508617728, percent=64.1)
3.獲取硬盤總的IO個數:
psutil.disk_io_counters() # 獲取磁盤IO總個數,sdiskio(read_count=577776, write_count=479420, read_bytes=18559246848, write_bytes=12466834944, read_time=506, write_time=517)
psutil.disk_io_counters(perdisk=True) # 獲取單個分區的IO個數
網絡信息
網絡信息與磁盤IO信息類似,包括byes_sent(發送字節數),byte_recv=xx(接受字節數),pack-ets_sent=xx(發送字節數),pack-ets_recv=xx(接收數據包數)
獲取網絡總的IO信息:
psutil.net_io_counters()
psutil.net_io_counters(pernic=True) # 輸出單個網絡接口的IO信息
其他系統信息
1.返回當前登錄系統的用戶信息:
psutil.users()
2.獲取開機時間:
psutil.boot_time() # 以Linux時間戳格式返回
# 如果想要轉換成自然時間格式:
datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S")
進程管理
進程信息
獲取當前應用程序的運行狀態,包括進程的啟動時間,查看設置CPU親和度,內存使用率,IO信息,socket連接,線程數等
1.列出所有進程PID
psutil.pids()
2.獲取單個進程的名字,路徑狀態
p = psutil.Process(716)
p.name() # 進程名
p.exe() # 進程bin路徑
p.cwd() # 進程工作目錄的絕對路徑
p.status() # 進程狀態
p.create_time() # 進程創建時間
p.uids() # 進程uid信息
p.gids() # 進程gid信息
p.cpu_times() # 進程CPU時間信息
p.cpu_affinity() # get進程的親和度
p.memory_percent() # 進程內存使用率
p.memory_info() #進程內存rss,vms信息
p.io_counters() #進程的IO信息,包括讀寫IO數字及參數
p.connections() #返回進程列表
p.num_threads() # 進程開啟的線程數
popen類的使用
popen類可以獲取用戶啟動的應用程序進程信息。
p = putil.Popen(["/usr/bin/python","-c","print('Hello')"],stdout=subprocess.PIPE)
p.name()
p.username() # 創建進程的用戶
p.communicate()
('hellon',None)
p.cpu_times() # 得到進程運行的CPU時間