【Python】 系統配置/進程等信息查看 psutil


psutil

  原以為psutil只是跟進程有關的一個模塊,沒想到它其實提供了從CPU到內存各種各樣的信息,十分IMBA。記錄一下

  我用了pip install psutil安裝的這個模塊,不過路中遇到了一個坑。原先的虛擬機環境中沒有安裝gcc所以編譯.c文件失敗。但是裝上之后依然安裝模塊失敗,后來去百度一下發現問題在於沒有安裝python-devel這個包。於是yum search了一下,安裝了python-devel.x86_64這個包后成功安裝。

■  進程信息查看

  第一次看到psutil就是用了模塊下的Process構建的進程對象。

  首先是查看系統中目前的所有進程pid:

print psutil.pids()

  返回一個列表,內容是當前所有進程的pid。在知道某個特定進程的pid之后,可以使用p = psutil.Process(pid)來得到一個進程對象。這個進程對象相比於subprocess.Popen給出的進程對象有更多的信息。如下:

p.name()   #進程名
p.exe()    #進程的bin路徑
p.cwd()    #進程的工作目錄絕對路徑
p.status()   #進程狀態
p.create_time()  #進程創建時間
p.uids()    #進程uid信息
p.gids()    #進程的gid信息
p.cpu_times()   #進程的cpu時間信息,包括user,system兩個cpu信息
p.cpu_affinity()  #get進程cpu親和度,如果要設置cpu親和度,將cpu號作為參考就好
p.memory_percent()  #進程內存利用率
p.memory_info()    #進程內存rss,vms信息
p.io_counters()    #進程的IO信息,包括讀寫IO數字及參數
p.connections()   #返回進程對象的列表
p.num_threads()  #進程開啟的線程數
p.username()  #執行用戶的名

  另外,psutil也封裝了Popen方法,使得進程對象可以跟蹤新開的進程。比如:

from subprocess import PIPE
p = psutil.Popen(["/usr/bin/python", "-c", "print('hello')"],stdout=PIPE)
print p.name()
print p.username()

 

■  獲取其他方面的系統信息

  psutil.cpu_count()  返回cpu個數

  psutil.cpu_times()  返回cpu使用時間信息對象,包括用戶時間,空轉時間等等。這些信息都是屬性,可以用.訪問

  psutil.boot_time()  返回系統開機的時間

  psutil.users()  返回用戶信息

  psutil.net_io_counters()  網卡屬性,連接數,流量等信息

  psutil.virtual_memory()  系統內存信息

  psutil.swap_memory()  swap內存信息

  以上函數返回的都是一些對象,訪問對象的屬性可以進一步獲得更精細的信息。

  

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM