Pythonのpsutilを使用してモジュール

あなたはまた、APIドキュメントを表示することができますが、だけでなく、振り向きます。

オリジナル住所:https://blog.csdn.net/cpongo5/article/details/88820174

psutil(Pythonのシステムおよびプロセスユーティリティ)を容易にシステム動作とシステムの利用(CPUの増設、メモリ、ディスク、ネットワークなど、等)情報の処理を得ることができ、サードパーティライブラリクロスプラットフォームです。これは主に、システムの監視、分析、制限管理システムリソースとプロセスのために使用されています。それは、このようなように、DF、殺すnetstatコマンドのps、トップ、lsofは、ifconfigコマンド、無料、素敵な、ionice、iostatの、iotopの、稼働時間、pidof、TTY、タスクセット、PMAPと同じコマンドラインツールの機能を実装しています。その上のLinux、Windowsの、MacOSの,, AIX、および:現在を含むオペレーティング・システムをサポートしていました。python2とのpython3バージョンをサポートし、現在の最新バージョンは5.4.8です。

1. psutilインストール
1
インストールpsutil PIP
の2 psutilをCPU性能情報取得システム
2.1。Cpu_timesのCPUランタイム
psutil.cpu_timesは(percpu =偽)各特定の状態のCPUの動作時間は、タプルとして返されます。

CPUの動作状態を説明する
ユーザ・モード・コードがCPU時間を消費して実行するユーザプロセスを。
CPUの使用率を実行するために、優先度の高いレベルのユーザーでの割合素敵。
カーネルのシステムコールの実行、システムのCPU時間を使用します。
アイドルCPUの割合がアイドルとシステムの未解決のディスクI / O要求です。
I / Oの入力と出力の時間を待ってiowaitのCPU
のIRQ CPUのハードウェアが費やした時間の割合を維持するために中断します。
ソフトウェア割り込みサービス時間のためのsoftirq CPUは、それが割合になります。
仮想環境で実行されている他のオペレーティングシステムにかかる時間盗む
仮想プロセッサ時間の割合を実行するためのゲストCPUを。
DPCは使用済プロシージャコールサービス時間遅延
割り込みハードウェア割り込みサービスに要する時間を
1
2
3
4
5
6
7
8
9
10
11
12である
13である
14
15
16
17
18である
。19
20
## Ubuntuシステム
のCPUにより実行される時刻情報を取得###

>>>インポートpsutil
>>> psutil.cpu_times()
scputimes(ユーザー= 42.85、素敵= 4.64、システム= 40.27、アイドル= 4864.93、iowaitのは、IRQ = 0.0、のsoftirq = 2.16、5.94を=盗む= 0.0、ゲスト= 0.0 、guest_nice = 0.0)


###は、各論理CPUのための情報を取得します。

>>> psutil.cpu_times(percpu = TRUE)
[scputimes(ユーザー= 13.2、素敵= 1.74、システム= 13.84、アイドル= 2712.55、iowaitのは、IRQ = 0.0、のsoftirq = 0.57、1.62 =盗む= 0.0、ゲスト= 0.0、 guest_nice = 0.0)、
scputimes(ユーザー= 10.48、素敵= 0.87、システム= 10.49、アイドル= 2719.36、iowaitのは、IRQ = 0.0、のsoftirq = 0.21、1.45 =盗む= 0.0、ゲスト= 0.0、guest_nice = 0.0)、
scputimes(ユーザー= 12.4、素敵= 1.36、システム= 10.22、アイドル= 2721.21、iowaitのは、1.37 = IRQ = 0.0、のsoftirq = 0.7、盗む= 0.0、ゲスト= 0.0、guest_nice = 0.0)、
scputimes(ユーザー= 11.28、素敵= 0.65システム= 9.2、アイドル= 2723.23、iowaitのは1.5 = IRQ = 0.0、のsoftirq = 0.83、盗む= 0.0、ゲスト= 0.0、guest_nice = 0.0)]

## Windowsオペレーティングシステム

Psutil.cpu_times >>>()
scputimes(ユーザー= 10006.453125、システム= 5947.421875、IDLE = 155,528.3125、割り込み= 209.296875、DPC = 187.203125)
2.2。Cpu_percent CPU使用率
psutil.cpu_percent(間隔=なし、percpu = Falseが) Aを返します浮動小数点数、現在のシステムのCPU使用率の範囲。間隔= 0.1場合、0.1sCPUの平均利用率を表します。システムを介して導入モジュールまたはCPU時間を比較するための最後の呼び出しのための間隔= 0またはなしで、すぐに返します。最初に返されたすべてのデータは無意味なデータです。真percpuがフロートの利用を示すリストを返されると、各論理CPUのパーセンテージで表しました。

。1
2
3
4
5
6
7
8
9
10
11
#とCPU使用率の最後の呼び出しからの経過時間
>>> psutil.cpu_percent()
1.3

#の現在の使用率1SのCPU
>>> psutil.cpu_percent(= 1間隔)
0.3

## 4つの論理CPU使用率
>>> psutil.cpu_percent(=をINTERVAL。1、percpu = TRUE)
[1.0、1.0、0.0、0.0]
2.3。CPU使用率のCpu_times_percent特定状態
psutil.cpu_times(percpu = TRUE) CPU時間の各特定の利用率を提供します。(のようにicpu_percent間隔と同じ意味のパラメータを意味percpu)。

。1
2
>>> psutil.cpu_times_percent(= 1間隔)
scputimes(ユーザー= 0.0、ニース= 0.0、0.5 =システム、IDLE = 99.5、iowaitの0.0 = IRQ = 0.0、のsoftirq = 0.0、スティール= 0.0、0.0 =ゲスト、guest_nice = 0.0)
2.4。CPU_COUNT CPU番号
psutil.cpu_count()論理システムの物理的または論理CPU番号の数を返します。

。1
2
3
4
5
6
7
8
9
10
## Windowsオペレーティングシステムの仮想マシンVM 2つのデュアルコアシングルコアプロセッサへの
論理CPUの数###
>>> psutil.cpu_count()
。8
###の物理CPUの数
> psutil.cpu_count >>(偽=論理)
。4
、現在利用可能なの### CPU番号
>>> LEN(psutil.Process()。cpu_affinity())
。8
2.5。CPU統計cpu_stats
各種CPU統計のcpu_statsを()フォームタプル返されます。

CPU情報解釈
ctx_switchesコンテキスト起動の後スイッチング時間
ブートので割り込みを中断する
中断soft_interruptsブートストラップの数のでソフトウェア
コールシステムコールブートストラップの数ので、システム
。1
2
。3
。4
。5
。6
。7
。8
Ubuntuシステム##

>>> psutil.cpu_stats()
scpustats(ctx_switches = 4589481 = 2532478を中断し、soft_interrupts = 719197、システムコール= 0)

## Windowsシステム
>>> psutil.cpu_stats()
scpustats(ctx_switches = 344 724 592 270 222 602 =割り込み、soft_interrupts = 0、システムコール= 1234130591)
2.6。Cpu_freq CPU周波数
psutil.cpu_freq(percpu =偽)パッケージ名を返すために、CPU周波数、、MHz単位で表される電流の最小および最大周波数を含みます。percpuがTrueであり、検索システムは、すべてのCPUの周波数をサポートしている場合は、各CPUの周波数のためのリストを返し、または単一の要素(支持のみLinuxシステム)を含むリストを返します。最小値と最大値を決定することができない場合、それらは0に設定されています。それが最大値を表している他のすべてのプラットフォーム上で現在の周波数値上のLinuxリアルタイムレポート、。

。1
2
3
4
5
6
7
8
9
10
11
## Windowsシステム

>>> psutil.cpu_freq()
scpufreq(電流= 2594.0、分= 0.0、最大値= 2594.0)
>>> psutil.cpu_freq(percpu =偽)
scpufreq(電流= 2594.0、分= 0.0、最大値= 2594.0)


WMIC:ルートの\ CLI> CPU一覧ブリーフ
DeviceIDのメーカーはMaxClockSpeed
CPU0 GenuineIntel 2594
。の3 psutil収集システムのメモリ性能情報
。物理メモリの使用量の3.1 virtual_memory()
メモリ情報インタプリタ
総合計物理メモリ
SWAPの下ですぐに利用可能なシステムメモリなしで入ることが可能なの。
メモリの%のシェアの使用
が使用する物理メモリ使用
物理メモリが自由に使用することではない
アクティブまたは最近使用した物理メモリ内にある
メモリの未使用のラベルされた非アクティブ
に使用されるキャッシュ・バッファバッファ
キャッシュされたccachedの使用をキャッシュ
共有物理メモリを表示する共有サイズ
スラブバッファカーネルデータ構造
。1
2
3
4
5
6
7
8
9
#windows

>>> psutil.virtual_memory()
(= 6532800512使用合計= 8473522176、1940721664 =利用可能な、パーセント= 77.1、1940721664 =フリー)svmem

#Linux

Psutil.virtual_memory >>>()
= 735 580 160キャッシュされた= 1090142208に使用svmem(合計= 2070257664 = 777 777 152利用可能な、パーセント= 62.4、無料= 80498688、1195728896 =アクティブ、= 459 780 096非アクティブ、164 036 608 =バッファ、共有= 10145792、 = 221 949 952スラブ)
3.2。swap_memory()スワップメモリ使用量
。1
2
3
4
5
6
7
8
9
10
11
罪とSOUT常に0に設定#Windowsオン

>>> psutil.swap_memory()
sswap(合計= 10151243776、= 7573495808用い、自由= 2577747968、パーセント= 74.6、罪= 0、SOUT = 0)

#Linux
#のSiN:ディスクから統合されたシステムは、スワップバイト
ディスクからのバイトのトータルシステム変更番号:#soutを

Psutil.swap_memory >>>()
sswap(合計使用= 2144333824 = 7090176、無料= 2137243648、パーセント= 0.3、SiNから= 0、Soutは= 6705152)
。4 psutilディスクのシステム性能情報を取得する
4.1。Disk_partitionsは、すべてのディスクの情報を取得します
。1
2
3
4
5
6
7
8
9
10
11
12である
#windows

>>> psutilインポートから*
>>> disk_partitions()
[sdiskpart(デバイス= 'C:\\'、マウントポイントは= 'C:\\'、のfstype = 'NTFS'は、= 'RW、固定'オプト)、#固态硬盘
sdiskpart(デバイス= 'D:\\'、マウントポイント= 'D:\\'、のfstype = 'FAT32'、= 'RW、リムーバブル'オプト)、#U盘
sdiskpart(デバイス= 'E:\\' 、マウントポイントは= 'E:\\'、fstypeに= ')' CDROM '=付き合え']#光盘

#Linux

Psutil.disk_partitions >>>()
[sdiskpart(デバイス= '/ DEV / SDA1'、マウントポイント= '/'、FStypeを= 'のext4'、OPTSの= 'RW、がrelatime、再マウント・エラー= RO')]
4.2。Disk_usage単一のディスクの情報取得
。1
2
3
4
5
6
7
8
9
10
11
12である
#のWindows

>>> disk_usage( 'C:\\')
sdiskusage(合計= 126491697152、使用= 86524149760、自由= 39967547392、パーセント= 68.4)
>>> disk_usage( 'D:\\')
sdiskusage(合計= 134184173568、使用= 1953497088、自由= 132230676480、パーセント= 1.5)
>>> disk_usage( 'E:\\')
PermissionError:[WinError 21]设备未就绪

#1のLinux
>>> psutil.disk_usage( "/ DEV / SDA1")
sdiskusage( = 0使用される合計= 1016070144、自由= 1016070144、パーセント= 0.0)
4.3。psutil.disk_io_counters获取IO信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#場合にtrueを返します情報にシステムを設置するための各物理ディスクperdisk

#未亡人

>>> disk_io_counters()
sdiskio(read_count = 870403、write_count = 665904、read_bytes = 36953495552、write_bytes = 20282217984、READ_TIME = 1565、write_time = 871)

#linux

Psutil.disk_io_counters >>>()
sdiskio(read_count = 53366、数は#の読み出し
write_count = 9803を、#ライトカウント
read_bytes = 709110784、バイト#番号が読み取ら
write_bytes = 417996800を、バイト#番号が書き込ま
READ_TIME = 29572、 #読み出し時間
write_time = 4656、#書き込み時間
read_merged_count = 1034合成読み取る#1の数
write_merged_count = 10158、合成書き込み#1の数
busy_time = 17792#実際に行うI / 0操作時間

。5 psutil取得システム性能ネットワーク情報
5.1。ネットワークソケットを取得psutil.net_connections
。1
2
3
4
5
6
7
8
9
10
11
12である
13である
#windows
>>> net_connections()
[sconn(FD = -1、家族= <AddressFamily.AF_INET6:23>、タイプ= 1、LADDR = ADDR(IP = '::'、ポート= 1536)、=()、ステータス= 'LISTEN'、PID RADDR = 724)、
sconn(FD = -1、家族= <AddressFamily.AF_INET:2>、タイプ= 2、LADDR = ADDR(IP = ':: 1'、ポート= 5353)、RADDR =()、ステータス=」 NONE」、PID = 4208)、
sconn(FD = -1、家族= <AddressFamily.AF_INET:2>、タイプ= 2、LADDR = ADDR(IP = '0.0.0.0'、ポート= 58044)、RADDR =() 、ステータス= 'NONE'、PID = 14420)、
sconn(FD = -1、家族= <AddressFamily.AF_INET:2>、タイプ= 1、LADDR = ADDR(IP = '127.0.0.1'、ポート= 36600)、 RADDR =()、ステータス= 'LISTEN'、PID = 6116)、
sconn(FD = -1、家族= <AddressFamily.AF_INET6:23>、タイプ= 1、LADDR = ADDR(IP = ':: 1'、ポート= 26672)、RADDR = ADDR(IP = ':: 1'、ポート= 35432))]


#Linux

Psutil.net_connections >>>()
[sConn(FDの= 6、家族= 2、タイプ= 2、LADDR = ADDR(IP = '0.0.0.0'、ポート= 68)、RADDR =()、ステータス= 'NONE' 、PID = 652)]
情報5.2。psutil.net_if_addrs取得カード
。1
2
3
4
5
6
7
8
9
10
11の
#1のWindows

>>> net_if_addrs()
{ 'のVMwareネットワークアダプタVMnet1':[snicaddr(家族= <AddressFamily.AF_LINK:-1>、アドレス= '00 -50-56-C0-00-01' 、ネットマスク=なし、放送=なし、PTP =なし)、snicaddr(家族= <AddressFamily.AF_INET:2>、アドレス= '192.168.153.1'、ネットマスク= '255.255.255.0'、放送=なし、PTP =なし)、snicaddr(家族= <AddressFamily .AF_INET6:23>、アドレス= 'FE80 :: 4192:c5d1:8FFF:98c6'、ネットマスク=なし、放送=なし、PTP =なし)]、
'VMwareのネットワークアダプタVMnet8の':[snicaddr(家族= <AddressFamily。 AF_LINK:-1>、アドレス= '00 -50-56-C0-00-08' *、ネットマスク=なし、放送=なし、PTP =なし)、snicaddr(家族= <AddressFamily.AF_INET:2>、アドレス=」 192.168.78.1' 、ネットマスク= '255.255.255.0'、放送=なし、PTP =なし)、snicaddr(家族= <AddressFamily。AF_INET6:23>、アドレス= 'FE80 :: 40d2:696a:CACB:8388'、ネットマスク=なし、放送=なし、PTP =なし)]、
'ループバック疑似インターフェイス1':[snicaddr(家族= <AddressFamily.AF_INET:2>、アドレス= '127.0.0.1'、ネットマスク= '255.0.0.0'、放送=なし、PTP =なし)、snicaddr(家族= <AddressFamily.AF_INET6:23>、アドレス= ':: 1'、ネットマスク=なし、放送=なし、PTP =なし)]}

#linux
>>> psutil.net_if_addrs()
{ 'LO':[snicaddr(家族= 2、アドレス= '127.0.0.1'、ネットマスク= '255.0.0.0'、放送=なし、PTP =なし)、snicaddr(家族= 10、アドレス= ':: 1'、ネットマスク= 'FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF'、放送=なし、PTP =なし)、snicaddr(家族= 17、アドレス= '00 :00:00:00:00:00' 、ネットマスク=なし、放送=なし、PTP =なし)]、
'eth0の':[snicaddr(家族= 2、アドレス= '192.168.78.139'、ネットマスク= '255.255。 255.0' 、放送= '192.168.78.255'、PTP =なし)、snicaddr(家族= 10、アドレス= 'FE80 :: 20C:29ff:fef4:4e44%eth0を'、ネットマスク= 'FFFF:FFFF:FFFF:FFFF: : '放送=なし、PTP =なし)、snicaddr(家族= 17、アドレス= '00:0C:29:F4:4E:44' 、ネットマスク=なし、放送=' FF:FF:FF:FF:FF :FF」、PTP =なし)]}
5.3。psutil。






7
8
9
10
11
12
13
14
15の
16
#窓

>>> net_if_stats()
{ '以太网':snicstats(ISUP =真、両面= <NicDuplex.NIC_DUPLEX_FULL:2>、速度= 1000、MTU = 1500)、
'VMwareのネットワークアダプタVMnet1':snicstats(ISUP =真、デュプレックス= <NicDuplex.NIC_DUPLEX_FULL:2>、速度= 100、MTU = 1500)、
'VMwareのネットワークアダプタVMnet8の':snicstats(ISUP =真、両面= <NicDuplex.NIC_DUPLEX_FULL:2>、速度= 100、MTU = 1500) 、
'ループバック疑似インターフェイス1':snicstats(ISUP =真、両面= <NicDuplex.NIC_DUPLEX_FULL:2>、速度= 1073、MTU = 1500)、
'WLAN':snicstats(ISUP = Falseを、両面= <NicDuplex.NIC_DUPLEX_FULL :2>、速度= 0、MTU = 1500)、
'本地连接* 2':snicstats(ISUP = Falseを、両面= <NicDuplex.NIC_DUPLEX_FULL:2>、速度= 0、MTU = 1500)、
「本地连接* 1 「:snicstats(ISUP = Falseの、二重= <NicDuplex.NIC_DUPLEX_FULL:2>、速度= 0、MTU = 1500)}
>>>

#Linuxの

Psutil.net_if_stats >>>()
{ 'LO':snicstats(ISUP =真、0 =デュプレックス、0 =スピード、MTU = 65536)、 'のeth0':snicstats(ISUP =真、デュプレックス= 2、高速= 1000、 = 1500 MTU)}
5.4。交通ネットワークポートを取得psutil.net_io_counters
。1
2
3
4
5
6
7
8
9
10
11
12は、
13である
14
15
16
。17
#psutil.net_io_counters(pernic =偽)pernicがTrue各システムにインストールされている場合ネットワークインターフェイスは、情報を返します。
#Windowsの

Net_io_counters >>>()
snetio(BYTES_SENT = 176 300 623、送信されたバイト#
bytes_recv = 402338143、#受信バイト
packets_sent = 2509858、送信されたパケットの位数
= 713322、#受信パケット数packets_recv
ERRIN = 0、#受信エラー
ERROUT = 0、#送信エラー
DROPIN = 0、#着信パケット数破棄
発信廃棄されたパケットのドロップアウト= 0)#番号


#Linuxの
>>> psutil.net_io_counters()
snetio(BYTES_SENT = 83 801、bytes_recv = 31649461、packets_sent = 1277、packets_recv = 21180、ERRIN = 0、ERROUT = 0、= 0 DROPIN、ドロップアウト= 0)
。6 psutilは、システムの性能に関する追加情報を得るには、
6.1。、取得開始時間
。1
2
3
>>>インポート日時、psutil
>>>日時。 datetime.fromtimestamp(psutil.boot_time())のstrftime( "%D %% Y-M-%のH:%のM:%S")。
'2018年11月9日午後03時01分10秒'
6.2。現在のユーザーを取得する
1
2
>>> psutil.users()
[suserの(名前は= 'ルート'、端末=なし、ホスト= '0.4.0.0'、= 1541862557.0開始、PID =なし)]
6.3。获取PID
1
2
>>> psutil.pids()
〔0、4、120、404、592、724、796、816、936、964、972、344、496、1180、1336、1508、1540、1568、1592 、1644、1696、1720]
6.4。获取进程信息
1
2
3
4
5
6
psutil.process_iterにおけるxについて>>>():
...プリント(X)
...
psutil.Process(PID = 592、名前= 'のCsrss.exe'は、「=開始しました2018年11月9日15時01分18秒')
psutil.Process(PID = 724、名前=' WININIT.EXEは'午後3時01分24秒2018年11月9日」、=開始')
psutil.Process(PID = 736 、名前= 'のsvchost.exeは'、)= '2018年11月10日午前17時20分13秒'を開始しました

---------------------
免責事項:この記事では、BY-SA著作権契約をCC 4.0に従って、元の記事CSDNのブロガーである「669は主張」、転載を添付してください元のソースのリンクと、この文。
オリジナルリンクします。https://blog.csdn.net/cpongo5/article/details/88820174

おすすめ

転載: www.cnblogs.com/linwenbin/p/11363796.html