【Python入門】36.常用第三方模塊之 獲取系統(tǒng)信息psutil

摘要:通過psutil模塊秸苗,我們可以輕松地獲取CPU召娜、內(nèi)存运褪、磁盤、網(wǎng)絡(luò)、進(jìn)程等相關(guān)信息秸讹,是系統(tǒng)管理與維護(hù)必不可少的模塊檀咙。


*寫在前面:為了更好的學(xué)習(xí)python,博主記錄下自己的學(xué)習(xí)路程璃诀。本學(xué)習(xí)筆記基于廖雪峰的Python教程弧可,如有侵權(quán),請告知?jiǎng)h除劣欢。歡迎與博主一起學(xué)習(xí)Pythonヽ( ̄▽ ̄)? *


目錄

常用第三方模塊
psutil
安裝psutil
獲取CPU信息
獲取內(nèi)存信息
獲取磁盤信息
獲取網(wǎng)絡(luò)信息
獲取進(jìn)程信息
小結(jié)

常用第三方模塊

psutil

psutil棕诵,指process and system utilities。它的功能時(shí)獲取系統(tǒng)相關(guān)信息凿将,實(shí)現(xiàn)系統(tǒng)監(jiān)控校套。

psutil支持跨平臺(tái)使用,支持Linux/UNIX/OSX/Windows等牧抵。是系統(tǒng)管理不可缺少的模塊笛匙。

安裝psutil

在命令行模式下輸入:

pip install psutil

等待安裝完成即可。

獲取CPU信息

psutil.cpu_count()獲取cpu的邏輯個(gè)數(shù)和物理個(gè)數(shù):

>>>import psutil
>>>psutil.cpu_count()
2
>>>psutil.cpu_count(logical+False)
2

信息顯示cpu是2核非超線程犀变。

psutil.cpu_times()獲取cpu所有信息:

>>>psutil.cpu_times()
scputimes(user=33700.5996281, system=13064.771748000057, idle=327437.26934339997, interrupt=827.1329021, dpc=476.0682517) 

psutil.cpu_percent()獲取cpu的使用率:

>>>psutil.cpu_percent(interval=1, percpu=True)
[19.7, 23.1] 

獲取內(nèi)存信息

psutil.virtual_memory()獲取物理內(nèi)存:

>>>psutil.virtual_memory()
svmem(total=8457904128, available=5363146752, percent=36.6, used=3094757376, free=5363146752) 

返回值以字節(jié)為單位妹孙,結(jié)果顯示,總內(nèi)存大小為8457904128 = 7.8GB获枝,已用3094757376 = 2.8GB蠢正,占用了36.6%。

psutil.swap_memory()獲取交換內(nèi)存:

>>>psutil.swap_memory()
sswap(total=16913903616, used=4278480896, free=12635422720, percent=25.3, sin=0, sout=0) 

顯示交換區(qū)大小是16913903616 = 15 GB映琳。

獲取磁盤信息

psutil.disk_partitions()獲取磁盤分區(qū)信息:

>>>psutil.disk_partitions()
[sdiskpart(device='C:\\', mountpoint='C:\\', fstype='NTFS', opts='rw,fixed'), sdiskpart(device='D:\\', mountpoint='D:\\', fstype='NTFS', opts='rw,fixed'), sdiskpart(device='E:\\', mountpoint='E:\\', fstype='', opts='cdrom')] 

信息顯示机隙,c盤的文件系統(tǒng)是NTFS,optsrw表示可讀寫萨西。

psutil.disk_usage('/')獲取磁盤使用情況:

>>>psutil.disk_usage('/')
sdiskusage(total=41881169920, used=35088613376, free=6792556544, percent=83.8) 

信息顯示有鹿,c磁盤總?cè)萘繛?1881169920 = 39GB,使用83.8%谎脯。

psutil.disk_io_counters()獲取磁盤IO信息:

>>>psutil.disk_io_counters()
sdiskio(read_count=902615, write_count=1299370, read_bytes=13761329664, write_bytes=40651160064, read_time=463, write_time=1647) 

獲取網(wǎng)絡(luò)信息

psutil.net_io_counters()獲取網(wǎng)絡(luò)讀寫字節(jié)/包的個(gè)數(shù):

>>>psutil.net_io_counters()
snetio(bytes_sent=366407235, bytes_recv=11336031853, packets_sent=5187036, packets_recv=8932277, errin=0, errout=0, dropin=0, dropout=0) 

psutil.net_if_addrs()獲取網(wǎng)絡(luò)接口信息:

>>>psutil.net_if_addrs()
{
  '本地連接 2': [snicaddr(family=<AddressFamily.AF_LINK: -1>, address='88-51-FB-7D-38-FA', netmask=None,...]
  '無線網(wǎng)絡(luò)連接 40':[snicaddr(family=<AddressFamily.AF_LINK: -1>,...]
  '無線網(wǎng)絡(luò)連接 39':[...]
  ...
}
  

psutil.net_if_stats()獲取網(wǎng)絡(luò)接口狀態(tài):

>>>psutil.net_if_stats()
{
  '本地連接 2': snicstats(isup=False, duplex=<NicDuplex.NIC_DUPLEX_FULL: 2>, speed=0, mtu=1500)葱跋,
  '無線網(wǎng)絡(luò)連接 40': snicstats(isup=False, duplex=<NicDuplex.NIC_DUPLEX_FULL: 2>, speed=0, mtu=1500),
  '無線網(wǎng)絡(luò)連接 39': snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_FULL: 2>, speed=225, mtu=1500), 
  ...
}

psutil.net_connections()獲取當(dāng)前網(wǎng)絡(luò)連接信息:

>>>psutil.net_connections()
[
  sconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=1, laddr=addr(ip='127.0.0.1', port=21440), raddr=(), status='LISTEN', pid=344), 
  sconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=1, laddr=addr(ip='192.168.0.119', port=52680), raddr=addr(ip='120.92.144.250', port=443), status='ESTABLISHED', pid=1288),
  sconn(fd=-1, family=<AddressFamily.AF_INET6: 23>, type=1, laddr=addr(ip='::', port=49173), raddr=(), status='LISTEN', pid=612), 
  ...
  sconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip='192.168.0.119', port=138), raddr=(), status='NONE', pid=4)
] 

注:你可能會(huì)得到一個(gè)AccessDenied錯(cuò)誤,原因是psutil獲取信息也是要走系統(tǒng)接口源梭,而獲取網(wǎng)絡(luò)連接信息需要root權(quán)限娱俺,這種情況下,可以退出Python交互環(huán)境废麻,用sudo重新啟動(dòng)

獲取進(jìn)程信息

psutil.pids()獲取所有進(jìn)程ID:

>>>psutil.pids()
[0, 4, 312, 488, 540, 556, 596, 612, 620,..荠卷,11440, 8924] 

獲取具體進(jìn)程的相關(guān)信息:

>>> p = psutil.Process(11232)   # 獲取指定進(jìn)程ID=11232,該進(jìn)程是python.exe
>>> p.name()                    # 進(jìn)程名稱
'python.exe '
>>> p.exe()                     # 進(jìn)程exe路徑
'D:\program files (x86)\Python37\python.exe '
>>> p.cwd()                     # 進(jìn)程工作目錄
'C:\Users\Administrator '
>>> p.cmdline()                 # 進(jìn)程啟動(dòng)的命令行
['python'] 
>>> p.ppid()                    # 父進(jìn)程ID
10284 
>>> p.parent()                  # 父進(jìn)程
psutil.Process(pid=10284, name='cmd.exe', started='15:48:27') 
>>> p.children()                # 子進(jìn)程列表
[]
>>> p.status()                  # 進(jìn)程狀態(tài)
'running'
>>> p.username()                # 進(jìn)程用戶名
'MS-20170504FUSX\Administrator '
>>> p.create_time()             # 進(jìn)程創(chuàng)建時(shí)間
1535960910.0 
>>> p.cpu_times()               # 進(jìn)程使用的CPU時(shí)間
pcputimes(user=0.046800299999999996, system=0.062400399999999995, children_user=0.0, children_system=0.0) 
>>> p.memory_info()             # 進(jìn)程使用的內(nèi)存
pmem(rss=13094912, vms=8167424,..., private=8167424)
>>> p.open_files()              # 進(jìn)程打開的文件
[popenfile(path='C:\\Windows\\System32\\zh-CN\\kernel32.dll.mui', fd=-1), ...] 
>>> p.connections()             # 進(jìn)程相關(guān)網(wǎng)絡(luò)連接
[]
>>> p.num_threads()             # 進(jìn)程的線程數(shù)量
2
>>> p.threads()                 # 所有線程信息
[pthread(id=10408, user_time=0.046800299999999996, system_time=0.062400399999999995), pthread(id=7924, user_time=0.0, system_time=0.0)] 
>>> p.environ()                 # 進(jìn)程環(huán)境變量
{'ALLUSERSPROFILE': 'C:\\ProgramData', 'APPDATA': 'C:\\Users\\Administrator\\AppData\\Roaming', 'ASL.LOG': 'Destination=file', ...}
>>> p.terminate()               # 結(jié)束進(jìn)程

注:和獲取網(wǎng)絡(luò)連接類似烛愧,獲取一個(gè)root用戶的進(jìn)程需要root權(quán)限油宜,啟動(dòng)Python交互環(huán)境或者.py文件時(shí)掂碱,需要sudo權(quán)限。

psutil還提供了一個(gè)test()函數(shù)慎冤,可以模擬出ps命令的效果:

>>> import psutil
>>> psutil.test()
USER         PID %MEM     VSZ     RSS TTY           START    TIME  COMMAND 
SYSTEM         0    ?       ?      24 ?             Sep01   50:57  System Idle Process 
SYSTEM         4    ?     120     368 ?             Sep01   53:01  System 
             152  0.2    9992   19232 ?             Sep01   00:03  svchost.exe 
Administra   224  0.1    2360    7264 ?             Sep01   00:00  conhost.exe 
             312    ?     444    1132 ?             Sep01   00:00  smss.exe 
...

小結(jié)

psutil模塊的功能十分強(qiáng)大疼燥,可以獲取CPU、內(nèi)存蚁堤、磁盤醉者、網(wǎng)絡(luò)等等系統(tǒng)信息。
psutil還有其他更多的功能披诗,如獲取用戶撬即、Windows服務(wù)等信息,具體請參考psutil的官網(wǎng)


以上就是本節(jié)的全部內(nèi)容呈队,感謝你的閱讀搞莺。

下一節(jié)內(nèi)容:常用第三方模塊之 virtualenv

有任何問題與想法,歡迎評(píng)論與吐槽掂咒。

和博主一起學(xué)習(xí)Python吧( ̄▽ ̄)~*

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末才沧,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子绍刮,更是在濱河造成了極大的恐慌温圆,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件孩革,死亡現(xiàn)場離奇詭異岁歉,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)膝蜈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門锅移,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人饱搏,你說我怎么就攤上這事非剃。” “怎么了推沸?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵备绽,是天一觀的道長。 經(jīng)常有香客問我鬓催,道長肺素,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任宇驾,我火速辦了婚禮倍靡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘课舍。我一直安慰自己塌西,他們只是感情好蜗顽,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著雨让,像睡著了一般。 火紅的嫁衣襯著肌膚如雪忿等。 梳的紋絲不亂的頭發(fā)上栖忠,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音贸街,去河邊找鬼庵寞。 笑死,一個(gè)胖子當(dāng)著我的面吹牛薛匪,可吹牛的內(nèi)容都是我干的捐川。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼逸尖,長吁一口氣:“原來是場噩夢啊……” “哼古沥!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起娇跟,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬榮一對情侶失蹤岩齿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后苞俘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盹沈,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年吃谣,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了乞封。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡岗憋,死狀恐怖肃晚,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情仔戈,我是刑警寧澤陷揪,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站杂穷,受9級(jí)特大地震影響悍缠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜耐量,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一飞蚓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧廊蜒,春花似錦趴拧、人聲如沸溅漾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽添履。三九已至,卻和暖如春脑又,著一層夾襖步出監(jiān)牢的瞬間暮胧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來泰國打工问麸, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留往衷,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓严卖,卻偏偏與公主長得像席舍,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子哮笆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 目錄【Python程序員都知道的入門知識(shí)】 1. 多線程練習(xí) for循環(huán)啟動(dòng)五條線程来颤,打印當(dāng)前處于活躍狀態(tài)的線程數(shù)...
    耑意兒閱讀 1,660評(píng)論 0 4
  • 1. 基礎(chǔ)知識(shí) 1.1、 基本概念稠肘、 功能 馮諾伊曼體系結(jié)構(gòu)1脚曾、計(jì)算機(jī)處理的數(shù)據(jù)和指令一律用二進(jìn)制數(shù)表示2、順序執(zhí)...
    yunpiao閱讀 5,309評(píng)論 1 22
  • 系統(tǒng)管理與維護(hù)命令 date date(選項(xiàng))(參數(shù)) | 選項(xiàng) | 說明 | | :-------- | ...
    蓓蓓的萬能男友閱讀 3,896評(píng)論 0 5
  • 你曾一顆心撲在一個(gè)人身上。 你曾愛他愛到失去理智鲁冯。 你曾放下尊嚴(yán)拷沸,放下固執(zhí),放下面子去愛一個(gè)人薯演。 你曾小心翼翼低到...
    松鼠愛吃肉閱讀 235評(píng)論 0 0
  • 九月三十日撞芍,陰歷八月十一,好吧跨扮,于我真的沒有什么概念序无。沒有下雨,天氣依然不好衡创,微風(fēng)有絲絲的涼意帝嗡,是我喜歡的溫度...
    路過煙火閱讀 102評(píng)論 0 1