1. 程式人生 > >1.python系統性能信息模塊之psutil模塊

1.python系統性能信息模塊之psutil模塊

oot lan users .org 接收數據 percent ifconfig dos 空閑

Psutil(進程和系統實用程序)是一個跨平臺的庫,用於在Python中檢索有關運行進程和系統資源利用率(CPU,內存,磁盤,網絡)的信息。它主要用於系統監視,分析和限制系統資源及運行進程的管理。它實現了Linux命令工具提供的許多功能,例如:ps,top,lsof,netstat,ifconfig,who,df,kill,nice,ionice,iostat,iotop,uptime,pidos,tty,tasket,pmap等。psutil目前支持以下平臺:linux、Windows、OSX、FreeBSD,OpenBSD、NETBSD、sun Solaris、AIX操作系統。所以是python實現系統運維不可或缺的模塊。

官方下載地址:https://pypi.org/

psutil模塊安裝:https://github.com/giampaolo/psutil

我這裏使用windows10系統,pip install psutil安裝

具體使用:

一.系統管理

1.查看cpu信息

psutil.cpu_times()

2.顯示cpu所有邏輯信息

psutil.cpu_times(percpu=True)

3.查看用戶的cpu時間比

psutil.cpu_times().user

4.查看cpu邏輯個數

psutil.cpu_count()

5.查看cpu物理個數

psutil.cpu_count(logical=False)

-----------------------------------------------

6.查看系統內存

mem = psutil.virtual_memory() //系統內存所有信息
mem.total //系統總計內存
mem.used //系統已經使用內存
mem.free //系統空閑內存

7.獲取swap交換內存信息

psutil.swap_memory()

----------------------------------------------

8.讀取磁盤參數

磁盤IO信息包括

read_count(讀IO數),

write_count(寫IO數)

read_bytes(IO寫字節數),

read_time(磁盤讀時間),

write_time(磁盤寫時間)

9.獲取分區信息

psutil.disk_partitions()

10.獲取指定分區的信息

psutil.disk_usage(/)   #獲取/分區的狀態

11.獲取磁盤總的IO詳情

psutil.disk_io_counters()

12.獲取單個分區IO個數

psutil.disk_io_counters(perdisk=True)    #perdisk=True參數獲取單個分區IO個數

13.讀取網絡信息

網絡信息與磁盤IO信息類似,涉及到幾個關鍵點,包括

byes_sent(發送字節數),

byte_recv=xxx(接受字節數),

pack-ets_sent=xxx(發送字節數),

pack-ets_recv=xxx(接收數據包數),這些網絡信息用

獲取網絡總IO信息

psutil.net_io_counters()  

14.輸出網絡每個接口信息

psutil.net_io_counters(pernic=True)     #pernic=True

15.獲取當前系統用戶登陸信息

psutil.users()

16.獲取系統開機時間

psutil.boot_time()  #以linux時間格式返回

17.將獲取到的時間轉換成可視時間

import datetime
datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H: %M: %S")

二.系統進程管理

1.列出系統所有進程的ID

psutil.pids()

2.獲取某一進程的信息,參數為pid

psutil.Process(pid)

3.獲取指定進程的名稱

psutil.Process(pid).name()

4.獲取指定進程的執行命令的路徑

psutil.Process(pid).exe()

5.獲取指定進程的工作路徑的絕對路徑

psutil.Process(pid).cwd() 

6.獲取進程的狀態

psutil.Process(pid).status()

7.進程創建時間

psutil.Process(pid).create_time()

8.以可視的方式顯示創建進程的時間

datetime.datetime.fromtimestamp(psutil.Process(pid).create_time()).strftime("%Y-%m-%d %H: %M: %S")

9.獲取指定進程的uid信息

psutil.Process(pid).uids()

10.獲取指定進程的gid信息

psutil.Process(pid).gids()

11.獲取指定進程的cpu時間信息,包括user,system

psutil.Process(pid).cpu_times()

12.獲取進程cpu的親和度

psutil.Process(pid).cpu_affinity()

13.進程內存的利用率

psutil.Process(pid).memory_percent()

14.進程內存的rss和vms的值

psutil.Process(pid).memory_info()

15.指定進程的IO數,包括讀寫IO數及字節數

psutil.Process(pid).io_counters()

16.返回打開進程的socket的namedutples列表,包括(fs,family,laddr)等信息

psutil.Process(pid).connections()

17.指定進程開啟的線程數

psutil.Process(pid).num_threads()

-------------------------------------------------------

18.popen類的使用

from subprocess import PIPE
P = psutil.Popen(["/usr/bin/python","-c","print(‘hello‘)"],stdout=PIPE)  執行系統中的命令,非交互,並且輸出。

>>> P.name()

‘python‘

>>> P.username()

‘root‘

>>> P.communicate()
(‘hello\n‘, None)

1.python系統性能信息模塊之psutil模塊