欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

怎么在python3中使用psutil檢測系統(tǒng)性能信息-創(chuàng)新互聯(lián)

這篇文章給大家介紹怎么在python3中使用psutil檢測系統(tǒng)性能信息,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

在潛江等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì) 網(wǎng)站設(shè)計(jì)制作按需制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),成都全網(wǎng)營銷推廣,外貿(mào)網(wǎng)站建設(shè),潛江網(wǎng)站建設(shè)費(fèi)用合理。

Python主要用來做什么

Python主要應(yīng)用于:1、Web開發(fā);2、數(shù)據(jù)科學(xué)研究;3、網(wǎng)絡(luò)爬蟲;4、嵌入式應(yīng)用開發(fā);5、游戲開發(fā);6、桌面應(yīng)用開發(fā)。

1、psutil模塊安裝

(1)源碼安裝psutil

git clone https://github.com/giampaolo/psutil.git
cd psutil
python3 setup.py install

(2)pip安裝

pip3 install psutil

(3)windows上安裝

C:\python35\python.exe -m pip install psutil

或者源碼編譯安裝:
make.bat build
make.bat install

2、獲取CPU信息

In [10]: psutil.cpu_times(percpu=False) #查看CPU所有信息
Out[10]: scputimes(user=306.98, nice=2.01, system=337.34, idle=410414.39, iowait=78.37, irq=0.0, softirq=17.42, steal=0.0, guest=0.0, guest_nice=0.0)

#user:用戶進(jìn)程花費(fèi)的時間
#nice:用戶模式執(zhí)行Niced優(yōu)先級進(jìn)程花費(fèi)的時間
#system:內(nèi)核模式進(jìn)程花費(fèi)的時間
#idle:閑置時間
#iowait:等待I/O完成的時間
#irq:處理硬件中斷的時間
#softirq:處理軟件中斷的時間
#steal:虛擬化環(huán)境中運(yùn)行的其他操作系統(tǒng)花費(fèi)的時間
#guest:在linux內(nèi)核的控制下為客戶端操作系統(tǒng)運(yùn)行虛擬CPU所花費(fèi)的時間
#guest_nice:虛擬機(jī)運(yùn)行niced所花費(fèi)的時間

#顯示CPU所有邏輯信息

In [7]: psutil.cpu_times(percpu=True) #顯示所有CPU邏輯信息
Out[7]: 
[scputimes(user=45.48, nice=0.31, system=69.41, idle=101285.67, iowait=19.67, irq=0.0, softirq=3.06, steal=0.0, guest=0.0, guest_nice=0.0),
 scputimes(user=110.04, nice=0.46, system=70.63, idle=101210.2, iowait=22.99, irq=0.0, softirq=5.0, steal=0.0, guest=0.0, guest_nice=0.0),
 scputimes(user=58.5, nice=0.5, system=126.64, idle=100934.59, iowait=14.47, irq=0.0, softirq=4.36, steal=0.0, guest=0.0, guest_nice=0.0),
 scputimes(user=92.1, nice=0.72, system=68.3, idle=101146.96, iowait=21.12, irq=0.0, softirq=4.79, steal=0.0, guest=0.0, guest_nice=0.0)]

#顯示用戶占CPU的時間比

In [11]: psutil.cpu_times().user #顯示用戶占CPU的時間比
Out[11]: 307.11

#顯示CPU邏輯個數(shù)和物理個數(shù)

In [8]: psutil.cpu_count(logical=True) #顯示CPU邏輯個數(shù)
Out[8]: 4

In [9]: psutil.cpu_count(logical=False) #顯示CPU物理個數(shù)
Out[9]: 4

#將各種CPU統(tǒng)計(jì)信息作為命名元組返回

In [15]: psutil.cpu_stats() #CPU統(tǒng)計(jì)信息
Out[15]: scpustats(ctx_switches=9838934, interrupts=10572621, soft_interrupts=5582125, syscalls=0)

#ctx_switches:啟動后的上下問切換次數(shù)
#interrupts:自啟動以來的中斷次數(shù)
#soft_interrupts:啟動后的軟件中斷數(shù)量
#syscalls:啟動以來的系統(tǒng)調(diào)用次數(shù),在linux上始終為0

3、內(nèi)存信息

psutil.virtual_memory()以字節(jié)返回內(nèi)存使用情況的統(tǒng)計(jì)信息

In [20]: mem = psutil.virtual_memory() #獲取內(nèi)存完整信息
In [21]: mem
Out[21]: svmem(total=2078892032, available=1508818944, percent=27.4, used=367063040, free=135192576, active=874614784, inactive=694231040, buffers=122880, cached=1576513536, shared=10444800, slab=255148032)

#total:總物理內(nèi)存
#available:可用的內(nèi)存
#used:使用的內(nèi)存
#free:完全沒有使用的內(nèi)存
#active:當(dāng)前正在使用的內(nèi)存
#inactive:標(biāo)記為未使用的內(nèi)存
#buffers:緩存文件系統(tǒng)元數(shù)據(jù)使用的內(nèi)存
#cached:緩存各種文件的內(nèi)存
#shared:可以被多個進(jìn)程同時訪問的內(nèi)存
#slab:內(nèi)核數(shù)據(jù)結(jié)構(gòu)緩存的內(nèi)存


In [22]: mem.total #獲取內(nèi)存總數(shù)
Out[22]: 2078892032

In [23]: mem.used #獲取已使用內(nèi)存
Out[23]: 367063040

In [24]: mem.free #獲取空閑內(nèi)存
Out[24]: 135192576

In [25]: psutil.swap_memory() #獲取swap內(nèi)存信息
Out[25]: sswap(total=2148528128, used=270336, free=2148257792, percent=0.0, sin=0, sout=12288)

#total:以字節(jié)為單位的總交換內(nèi)存
#used:以字節(jié)為單位使用交換內(nèi)存
#free:以字節(jié)為單位的可用交換內(nèi)存
#percent:使用百分比
#sin:系統(tǒng)從磁盤交換的字節(jié)數(shù)
#sout:系統(tǒng)從磁盤換出的字節(jié)數(shù)

4、磁盤信息

psutil.disk_partitions(all=False):返回所有安裝的磁盤分區(qū)作為名稱元組的列表,包括設(shè)備,安裝點(diǎn)和文件系統(tǒng)類型,類似于Unix上的‘df'命令.

In [25]: import psutil
In [26]: psutil.disk_partitions(all=False) #獲取磁盤完整信息
Out[26]: 
[sdiskpart(device='/dev/sda3', mountpoint='/', fstype='xfs', opts='rw,seclabel,relatime,attr2,inode64,noquota'),
 sdiskpart(device='/dev/sda5', mountpoint='/home', fstype='xfs', opts='rw,seclabel,relatime,attr2,inode64,noquota'),
 sdiskpart(device='/dev/sda1', mountpoint='/boot', fstype='xfs', opts='rw,seclabel,relatime,attr2,inode64,noquota')]

psutil.disk_usage(path):將有關(guān)包含給定路徑的分區(qū)的磁盤使用情況統(tǒng)計(jì)信息返回為指定元組,包括以字節(jié)表示的,總共,已使用和空閑的空間以及百分比使用率,如果路徑存在則引發(fā)OSError.

In [30]: psutil.disk_usage('/') #獲取分區(qū)使用情況
Out[30]: sdiskusage(total=53660876800, used=3662462976, free=49998413824, percent=6.8)

#total:總的大?。ㄗ止?jié))
#used:已使用的大?。ㄗ止?jié))
#free:空閑的大?。ㄗ止?jié))
#percent:使用百分比

psutil.disk_io_counters(perdisk=False,nowrap=True)  #將系統(tǒng)范圍的磁盤I/0統(tǒng)計(jì)作為命名元組返回,包括以下字段:

  1. read_count :讀取次數(shù)

  2. write_count :寫入次數(shù)

  3. read_bytes :讀取的字節(jié)數(shù)

  4. write_bytes :寫入的字節(jié)數(shù)

  5. read_time:從磁盤讀取的時間(以毫秒為單位)

  6. write_time:寫入磁盤的時間(毫秒為單位)

  7. busy_time:花費(fèi)在實(shí)際I/O上的時間

  8. read_merged_count:合并讀取的數(shù)量

  9. write_merged_count:合并寫入次數(shù)

perdisk為True時返回物理磁盤相同的信息;nowrap為True它將檢測并調(diào)整函數(shù)調(diào)用中的新值。

In [32]: psutil.disk_io_counters(perdisk=True) #獲取單個分區(qū)的IO信息
Out[32]: 
{'fd0': sdiskio(read_count=0, write_count=0, read_bytes=0, write_bytes=0, read_time=0, write_time=0, read_merged_count=0, write_merged_count=0, busy_time=0),
 'sda1': sdiskio(read_count=1003, write_count=25, read_bytes=5893632, write_bytes=2226176, read_time=1143, write_time=11298, read_merged_count=0, write_merged_count=1, busy_time=3976),
 'sda2': sdiskio(read_count=51, write_count=2, read_bytes=2260992, write_bytes=12288, read_time=246, write_time=391, read_merged_count=0, write_merged_count=1, busy_time=545),
 'sda3': sdiskio(read_count=15216, write_count=34370, read_bytes=456854528, write_bytes=2394566656, read_time=186146, write_time=3937459, read_merged_count=17, write_merged_count=37260, busy_time=156705),

5、網(wǎng)絡(luò)信息

psutil.net_io_counters(pernic=False,nowrap=True):將系統(tǒng)范圍的網(wǎng)絡(luò)I/O統(tǒng)計(jì)信息作為命名元組返回,包括以下屬性:

  1. bytes_sent:發(fā)送的字節(jié)數(shù)

  2. bytes_recv:收到的字節(jié)數(shù)

  3. packets_sent:發(fā)送的數(shù)據(jù)包數(shù)量

  4. packets_recv:接收的數(shù)據(jù)包數(shù)量

  5. errin:接收時的錯誤總數(shù)

  6. errout:發(fā)送時的錯誤總數(shù)

  7. dropin:丟棄的傳入數(shù)據(jù)包總數(shù)

  8. dripout:丟棄的傳出數(shù)據(jù)包總數(shù)(在OSX和BSD上始終為0)

如果pernic為True網(wǎng)絡(luò)接口上安裝的每個網(wǎng)絡(luò)接口返回相同的信息,nowrap為True時將檢測并調(diào)整函數(shù)調(diào)用中的這些數(shù)字,將舊值添加到新值,保證返回的數(shù)字將增加或不變,但不減少,net_io_counters.cache_clear()可用于使nowrap緩存失效。

In [79]: psutil.net_io_counters(pernic=False,nowrap=True)
Out[79]: snetio(bytes_sent=19487039, bytes_recv=301660567, packets_sent=123489, packets_recv=337983, errin=0, errout=0, dropin=0, dropout=0)

In [81]: psutil.net_io_counters(pernic=True,nowrap=True)
Out[81]: 
{'ens32': snetio(bytes_sent=17684066, bytes_recv=299856862, packets_sent=121275, packets_recv=335825, errin=0, errout=0, dropin=0, dropout=0),
 'lo': snetio(bytes_sent=1812739, bytes_recv=1812739, packets_sent=2270, packets_recv=2270, errin=0, errout=0, dropin=0, dropout=0)}

psutil.net_connections(kind='inet'):返回系統(tǒng)范圍的套接字鏈接,命令元組列表返回,每個命名元組提供了7個屬性:

  1. fd :套接字文件描述符。

  2. family:地址系列,AF_INET,  AF_INET6 或AF_UNIX。

  3. type:地址類型, SOCK_STREAM或  SOCK_DGRAM。

  4. laddr :本地地址作為 命名元組或  AF_UNIX套接字的情況。 對于UNIX套接字,請參閱下面的注釋。 (ip, port) path

  5. raddr :遠(yuǎn)程地址是 指定的元組,或者是 UNIX套接字 的絕對 地址 。 當(dāng)遠(yuǎn)程端點(diǎn)未連接時,您將獲得一個空元組(AF_INET *)或 (AF_UNIX)。 對于UNIX套接字,請參閱下面的注釋。 (ip, port) path ""

  6. status :表示TCP連接的狀態(tài)。

  7. pid :打開套接字的進(jìn)程的PID,如果是可檢索的,否則 None 。 在某些平臺(例如Linux)上,此字段的可用性根據(jù)進(jìn)程權(quán)限而變化(需要root)。

kind參數(shù)的值包括:

inet:ipv4和ipv6

inet4:ipv4

inet6:ipv6

tcp:TCP

tcp4:TCP over ipv4

tcp6:TCP over ipv6

udp:UDP

dup4:基于ipv4的udp

cpu6:基于ipv6的udp

Unix:UNIX套接字(udp和TCP協(xié)議)

all:所有可能的家庭和協(xié)議的總和

In [86]: psutil.net_connections(kind='tcp')
Out[86]: 
[sconn(fd=3, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_STREAM: 1>, laddr=addr(ip='127.0.0.1', port=9090), raddr=(), status='LISTEN', pid=103599),
 sconn(fd=4, family=<AddressFamily.AF_INET6: 10>, type=<SocketKind.SOCK_STREAM: 1>, laddr=addr(ip='::', port=22), raddr=(), status='LISTEN', pid=1179),
 sconn(fd=13, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_STREAM: 1>, laddr=addr(ip='127.0.0.1', port=25), raddr=(), status='LISTEN', pid=1279),
 sconn(fd=10, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_STREAM: 1>, laddr=addr(ip='0.0.0.0', port=3306), raddr=(), status='LISTEN', pid=70099),
 sconn(fd=3, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_STREAM: 1>, laddr=addr(ip='0.0.0.0', port=22), raddr=(), status='LISTEN', pid=1179),
 sconn(fd=3, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_STREAM: 1>, laddr=addr(ip='192.168.146.139', port=22), raddr=addr(ip='192.168.146.1', port=4238), status='ESTABLISHED', pid=122738),
 sconn(fd=12, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_STREAM: 1>, laddr=addr(ip='127.0.0.1', port=9001), raddr=(), status='LISTEN', pid=103596),
 sconn(fd=14, family=<AddressFamily.AF_INET6: 10>, type=<SocketKind.SOCK_STREAM: 1>, laddr=addr(ip='::1', port=25), raddr=(), status='LISTEN', pid=1279)]

In [87]: psutil.net_connections(kind='inet4')
Out[87]: 
[sconn(fd=3, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_STREAM: 1>, laddr=addr(ip='127.0.0.1', port=9090), raddr=(), status='LISTEN', pid=103599),
 sconn(fd=13, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_STREAM: 1>, laddr=addr(ip='127.0.0.1', port=25), raddr=(), status='LISTEN', pid=1279),
 sconn(fd=10, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_STREAM: 1>, laddr=addr(ip='0.0.0.0', port=3306), raddr=(), status='LISTEN', pid=70099),
 sconn(fd=3, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_STREAM: 1>, laddr=addr(ip='0.0.0.0', port=22), raddr=(), status='LISTEN', pid=1179),
 sconn(fd=3, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_STREAM: 1>, laddr=addr(ip='192.168.146.139', port=22), raddr=addr(ip='192.168.146.1', port=4238), status='ESTABLISHED', pid=122738),
 sconn(fd=6, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_DGRAM: 2>, laddr=addr(ip='0.0.0.0', port=68), raddr=(), status='NONE', pid=119605),
 sconn(fd=12, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_STREAM: 1>, laddr=addr(ip='127.0.0.1', port=9001), raddr=(), status='LISTEN', pid=103596),
 sconn(fd=1, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_DGRAM: 2>, laddr=addr(ip='127.0.0.1', port=323), raddr=(), status='NONE', pid=741)]

psutil.net_if_addrs():以字典的方式返回系統(tǒng)上的每個網(wǎng)絡(luò)接口的關(guān)聯(lián)地址。

In [88]: psutil.net_if_addrs()
Out[88]: 
{'lo': [snic(family=<AddressFamily.AF_INET: 2>, address='127.0.0.1', netmask='255.0.0.0', broadcast=None, ptp=None),
 snic(family=<AddressFamily.AF_INET6: 10>, address='::1', netmask='ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', broadcast=None, ptp=None),
 snic(family=<AddressFamily.AF_PACKET: 17>, address='00:00:00:00:00:00', netmask=None, broadcast=None, ptp=None)],
 'ens32': [snic(family=<AddressFamily.AF_INET: 2>, address='192.168.146.139', netmask='255.255.255.0', broadcast='192.168.146.255', ptp=None),
 snic(family=<AddressFamily.AF_INET6: 10>, address='fe80::9853:19bb:b07b:89d4%ens32', netmask='ffff:ffff:ffff:ffff::', broadcast=None, ptp=None),
 snic(family=<AddressFamily.AF_PACKET: 17>, address='00:50:56:31:d8:11', netmask=None, broadcast='ff:ff:ff:ff:ff:ff', ptp=None)]}

psutil.net_if_stats():將安裝在系統(tǒng)上的網(wǎng)絡(luò)接口的信息作為字典返回,其中包括isup是否啟動,duplex雙工模式,speed速率,mtu大傳輸單位,以字節(jié)表示

In [89]: psutil.net_if_stats()
Out[89]: 
{'ens32': snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_FULL: 2>, speed=1000, mtu=1500),
 'lo': snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_UNKNOWN: 0>, speed=0, mtu=65536)}

6、其他系統(tǒng)信息

IN[93]:import psutil,time
In [94]: psutil.boot_time() #系統(tǒng)啟動時間戳
Out[94]: 1527457908.0
In [96]: time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(psutil.boot_time
 ...: ())) #格式化時間
Out[96]: '2018-05-28 05:51:48'

In [97]: psutil.users() #返回當(dāng)前鏈接的系統(tǒng)用戶
Out[97]: 
[suser(name='root', terminal='tty1', host='', started=1527050368.0, pid=769),
 suser(name='root', terminal='pts/0', host='192.168.146.1', started=1527559040.0, pid=122742),
 suser(name='root', terminal='pts/1', host='192.168.146.1', started=1527559040.0, pid=122761)]

 7、系統(tǒng)進(jìn)程管理

In [1]: import psutil

In [2]: psutil.pids() #列出所有進(jìn)程PID
Out[2]: 
[1,2,3,5,6,7,8,]

In [3]: p = psutil.Process(1265) #實(shí)例化一個Process對象,參數(shù)為進(jìn)程PID

In [4]: p.name() #進(jìn)程名
Out[4]: 'mysqld'

In [5]: p.exe() #進(jìn)程bin路徑
Out[5]: '/usr/local/mysql-5.5.32/bin/mysqld'

In [6]: p.cwd() #進(jìn)程工作目錄絕對路徑
Out[6]: '/mysql/data'

In [7]: p.status() #進(jìn)程狀態(tài)
Out[7]: 'sleeping'

In [8]: p.create_time() #進(jìn)程創(chuàng)建時間,時間戳格式
Out[8]: 1527642963.22

In [9]: p.uids() #進(jìn)程UID信息
Out[9]: puids(real=1001, effective=1001, saved=1001)

In [10]: p.gids() #進(jìn)程GID信息
Out[10]: pgids(real=1001, effective=1001, saved=1001)

In [11]: p.cpu_times() #進(jìn)程CPU時間信息,包括user、system的CPU時間
Out[11]: pcputimes(user=1.53, system=6.06, children_user=0.0, children_system=0.0)

In [12]: p.cpu_affinity() #get進(jìn)程CPU親和度,如果設(shè)置進(jìn)程CPU親和度,將CPU號作為參數(shù)即可
Out[12]: [0, 1, 2, 3]

In [13]: p.memory_info() #進(jìn)程內(nèi)存rss、vms信息
Out[13]: pmem(rss=45268992, vms=460525568, shared=4399104, text=9420800, lib=0, data=425431040, dirty=0)

In [14]: p.io_counters() #進(jìn)程IO信息包括讀寫IO數(shù)及字節(jié)數(shù)
Out[14]: pio(read_count=594, write_count=27, read_bytes=15859712, write_bytes=32768, read_chars=6917150, write_chars=1555)

In [15]: p.connections() #返回發(fā)開進(jìn)程socket的namedutples列表,包括fs、family、laddr等信息
Out[15]: [pconn(fd=10, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_STREAM: 1>, laddr=addr(ip='0.0.0.0', port=3306), raddr=(), status='LISTEN')]

In [16]: p.num_threads() #進(jìn)程開啟的線程數(shù)
Out[16]: 16

In [17]: p.memory_percent() #進(jìn)程內(nèi)存利用率
Out[17]: 2.177553778800572

psutil.process_iter(attrs=None,ad_value=None):返回一個迭代器process,為本地機(jī)器上的所有正在運(yùn)行的進(jìn)程生成一個類實(shí)例。

psutil.pid_exists(pid):檢查給定的PID是否存在于當(dāng)前進(jìn)程列表中。

psutil.wait_procs(procs,timeout=None,callback=None):等待process終止實(shí)例列表的便捷函數(shù),返回一個元組,指示哪些進(jìn)程已經(jīng)消失,哪些進(jìn)程還活著。

class psutil.Popen(*args,**kwargs):它啟動一個子進(jìn)程,并完全像使用subprocess.Popen一樣處理,它還提供了所有psutil.Process類的方法。Popen類的作用是獲取用戶啟動的應(yīng)用程序進(jìn)程信息,以便跟蹤程序進(jìn)程的運(yùn)行狀態(tài)。

In [18]: import psutil

In [19]: from subprocess import PIPE

In [20]: p = psutil.Popen(["/usr/bin/python","-c","print('hello world')"],stdout=
 ...: PIPE)

In [21]: p.name()
Out[21]: 'python'

In [22]: p.username()
Out[22]: 'root'

In [23]: p.communicate()
Out[23]: (b'hello world\n', None)

進(jìn)程過濾實(shí)例:

In [25]: import psutil

In [26]: from pprint import pprint as pp

#根據(jù)進(jìn)程名查看系統(tǒng)中的進(jìn)程名與pid
In [27]: pp([p.info for p in psutil.process_iter(attrs=['pid','name']) if 'python
 ...: ' in p.info['name']])
[{'name': 'ipython3', 'pid': 2429}]

In [28]: pp([p.info for p in psutil.process_iter(attrs=['pid','name']) if 'mysql'
 ...: in p.info['name']])
[{'name': 'mysqld_safe', 'pid': 987}, {'name': 'mysqld', 'pid': 1265}]

#所有用戶進(jìn)程
In [32]: import getpass

In [33]: pp([(p.pid,p.info['name']) for p in psutil.process_iter(attrs=['name','u
 ...: sername']) if p.info['username'] == getpass.getuser()])
[(1, 'systemd'),
 (2, 'kthreadd'),
 (3, 'ksoftirqd/0'),
 (5, 'kworker/0:0H'),
 (6, 'kworker/u256:0'),
...
 (5004, 'kworker/0:0')]

#查看積極運(yùn)行的進(jìn)程:
In [37]: pp([(p.pid,p.info) for p in psutil.process_iter(attrs=['name','status'])
 ...: if p.info['status'] == psutil.STATUS_RUNNING])
[(2429, {'name': 'ipython3', 'status': 'running'})]

#使用日志文件的進(jìn)程
In [38]: import os,psutil

In [39]: for p in psutil.process_iter(attrs=['name','open_files']):
 ...:  for file in p.info['open_files'] or []:
 ...:   if os.path.splitext(file.path)[1] == '.log':
 ...:    print("%-5s %-10s %s" % (p.pid,p.info['name'][:10],file.path
 ...: ))
 ...:    
 auditd  /var/log/audit/audit.log
 vmtoolsd /var/log/vmware-vmsvc.log
 tuned  /var/log/tuned/tuned.log

#消耗超過5M內(nèi)存的進(jìn)程:
In [42]: pp([(p.pid,p.info['name'],p.info['memory_info'].rss) for p in psutil.pro
 ...: cess_iter(attrs=['name','memory_info']) if p.info['memory_info'].rss > 5
 ...: * 1024 * 1024])
[(1, 'systemd', 7118848),
 (411, 'systemd-udevd', 6254592),
 (712, 'polkitd', 13553664),
 (716, 'abrtd', 5734400),
 (724, 'VGAuthService', 6262784),
 (725, 'vmtoolsd', 6426624),
 (974, 'tuned', 19648512),
 (1265, 'mysqld', 45268992),
 (2204, 'sshd', 5726208),
 (2429, 'ipython3', 37232640)]


#消耗量大的3個進(jìn)程
In [43]: pp([(p.pid, p.info) for p in sorted(psutil.process_iter(attrs=['name', '
 ...: memory_percent']), key=lambda p: p.info['memory_percent'])][-3:])
[(974, {'memory_percent': 0.9451434561080659, 'name': 'tuned'}),
 (2429, {'memory_percent': 1.7909847854955845, 'name': 'ipython3'}),
 (1265, {'memory_percent': 2.177553778800572, 'name': 'mysqld'})]

#消耗最多CPU時間的前3個進(jìn)程
In [44]: pp([(p.pid, p.info['name'], sum(p.info['cpu_times'])) for p in sorted(ps
 ...: util.process_iter(attrs=['name', 'cpu_times']), key=lambda p: sum(p.info
 ...: ['cpu_times'][:2]))][-3:])
[(1265, 'mysqld', 13.93),
 (2429, 'ipython3', 14.809999999999999),
 (725, 'vmtoolsd', 16.74)]

#導(dǎo)致最多I/O的前3個進(jìn)程
In [45]: pp([(p.pid, p.info['name']) for p in sorted(psutil.process_iter(attrs=['
 ...: name', 'io_counters']), key=lambda p: p.info['io_counters'] and p.info['
 ...: io_counters'][:2])][-3:])
[(2429, 'ipython3'), (725, 'vmtoolsd'), (1, 'systemd')]


#前3個進(jìn)程打開最多的文件描述符:
In [46]: pp([(p.pid, p.info) for p in sorted(psutil.process_iter(attrs=['name', '
 ...: num_fds']), key=lambda p: p.info['num_fds'])][-3:])
[(377, {'name': 'systemd-journald', 'num_fds': 24}),
 (1, {'name': 'systemd', 'num_fds': 43}),
 (1307, {'name': 'master', 'num_fds': 91})]

關(guān)于怎么在python3中使用psutil檢測系統(tǒng)性能信息就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

新聞名稱:怎么在python3中使用psutil檢測系統(tǒng)性能信息-創(chuàng)新互聯(lián)
網(wǎng)頁地址:http://aaarwkj.com/article4/jcgie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、響應(yīng)式網(wǎng)站電子商務(wù)、網(wǎng)站內(nèi)鏈、外貿(mào)網(wǎng)站建設(shè)網(wǎng)站設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)
国产精品久久久久精品三级下载 | 欧美久久久久久久黑人| 中文字幕在线成人影院| 成人福利网站午夜一区| 亚洲av毛片在线免费播放| 欧美三级欧美一级视频看 | 亚洲少妇熟女一区二区三区| 成人午夜福利视频免费观看 | 国产精品久久乱码综合| av天堂男人站在线观看| 日麻批视频在线免费观看| 国产三级黄在线观看| 亚洲欧美日韩不卡视频| 日韩欧美亚洲天堂视频| 亚洲人妻乱人伦中文字幕在线| 日韩视频 一区 二区| 欧美特黄大片在线观看| 亚洲一区二区三区三洲| 午夜精品久久福利视频| 国产亚洲一区二区自拍视频| 久久成人av一区二区三区| 中文字幕日本人妻少妇| 蜜臀久久精品国产综合| 日本欧美精品一区二区三区| 日本av人妻在线观看| 尤物视频在线观看一下| 精品视频日韩在线观看| 精品亚洲一区二区在线| 欧美日本一区二区三区免费| 日韩精品中文字幕有码在线| 国产午夜精品福利爽爽| 久亚洲精品九九久久99| 免费观看国产裸体视频| 天天操夜夜操狠狠操91| 亚洲成人免费电影观看| 在线免费观看国产黄色av| 亚洲一区二区三区熟妇| 在线激情av中文字幕| 久久裸体国语精品国产91| 亚洲欧美综合精品久久成人| 亚洲大片色一区在线观看|