Pythonのpsutilモジュールについて説明します。
システムプロセスやプロファイリングで作業している時、私たちはテストの影響が何を生み出すかを理解するために、システムのタスクマネージャをチェックする代わりになるものを望む傾向があります。
タスクマネージャを手動でチェックして情報を得る過程で、同じプロセスを何度も繰り返していることに気付きます。
もちろん、これはDon’t Repeat Yourselfの愛好家の目にはよく映らないでしょう。
ということで、システムプロセスを通過して、スクリプトを実行したときにレポートを提供できるようなスクリプトを作成する必要があります。
そこで、psutil
モジュールが登場します。
このモジュールは、システムプロセスで作業する際に非常に必要な機能を提供します。
psutil` は、システム監視、プロファイリング、プロセスリソースの制限、実行中のプロセスの管理に最適なモジュールです。
さっそく使ってみましょう
psutil モジュールのインストール
pipシステムを使用したpsutil
のインストール手順は、非常に簡単です。
pip install psutil |
他のパッケージマネージャを使用している場合は、psutilのインストールについて、それらのドキュメントを調べたいかもしれません。
これで、モジュールのセットアップと準備ができましたので、タスクマネージャをチェックする必要性を完全に置き換えることから始めることができます。
Python スクリプトで psutil モジュールを使用する
psutil` モジュールは、システム、プロセス、ウィンドウズサービス、定数といったセクションに分類される、たくさんのメソッドを含むモジュールです。
また、雑多なカテゴリに分類される独立したメソッドも存在します。
これらのメソッドは数多く存在するため、このセクションではそのうちのいくつかを紹介するだけです。
この記事もチェック:Pythonのstatisticsモジュールで便利なメソッドを7つ紹介する
1. システム情報
psutil`は、CPU、メモリ、ディスク、ネットワーク、センサー、およびその他のシステム情報に関する情報を受け取るために使用できる、多種多様な関数を提供しています。
これらのセクションからテストされたいくつかの関数は、次のようなコードと出力を提供します。
# Importing the module before utilization import psutil
# Retrieving information regarding the CPU ## Returns the system CPU times as a named tuple print (psutil.cpu_times())
## Returns the system-wide CPU utilization as a percentage print (psutil.cpu_percent())
## Returns the number of logical CPUs in the system print (psutil.cpu_count())
## Returns the various CPU statistics as a tuple print (psutil.cpu_stats())
## Returns the CPU frequency as a nameduple print (psutil.cpu_freq())
|
これらの関数をコンソールに出力すると、以下のようなログが出力されます。
scputimes(user = 242962.0 , system = 84860.32812499994 , idle = 432883.46875 , interrupt = 5186.125 , dpc = 4331.65625 )
0.0 4 scpustats(ctx_switches = 2378452881 , interrupts = 1779121851 , soft_interrupts = 0 , syscalls = 3840585413 )
scpufreq(current = 2000.0 , min = 0.0 , max = 2601.0 )
|
psutil`モジュールの利用に関して、簡単な概要をgistにまとめましたので、調べたい方はご覧ください。
このモジュールには他にも多くの機能があり、公式ドキュメントで確認することができます。
2. プロセス
psutilモジュールを通して利用可能な関数により、Pythonはシステム全体で現在実行されているプロセスに関する情報を取得することができます。
これらのプロセスは、システムから取得できる特定の PID (Process ID) を持っており、特定のプロセスとその統計についてより深く理解するために、それらを使用することができます。
プロセスを扱うモジュールの機能を使って、簡単な方法でいくつかのプロセスに関する情報を取得することができます。
# Importing the module before utilization import psutil
# Returning a sorted list of currently running processes print (psutil.pids())
# Returns an iterator which prevents the race condition for process stats print (psutil.process_iter())
# Used to check whether a certain process exists in the current process list print (psutil.pid_exists( 0 ))
# An example to terminate and wait for the children def on_terminate(proc):
print ( "process {} terminated with exit code {}" . format (proc, proc.returncode))
procs = psutil.Process().children()
for p in procs:
p.terminate()
gone, alive = psutil.wait_procs(procs, timeout = 3 , callback = on_terminate)
for p in alive:
p.kill()
|
例外処理に便利な関数やプロセスクラスの利用法については、ドキュメントにまとめられていますので、作業可能なパラメータを確認したい場合は、そちらを参照してください。
3. Windowsサービス
psutil`モジュールは、インストールされているすべてのWindowsサービスをチェックインする機能も提供しています。
WindowsServiceクラスは、各Windowsサービスを名前で表したクラスです。
サービスに関する詳細は、主に win_service_iter()
と win_service_get()
関数を用いて取得されます。
# Importing the module before utilization import psutil
# Returns an iterator yielding a WindowsService class instance print (psutil.win_service_iter())
# To provide the list of all processes contained we can use the list() function print ( list (psutil.win_service_iter()))
# Gets a Windows service by name, returning a WindowsService instance print (psutil.win_service_get( 'WpnUserService_6b5d2' ))
|
Windowsサービスの操作方法については,psutilの公式ドキュメントで詳しく説明されていますので, 関数についてもっと詳しく知りたい方はそちらをご覧ください.
この記事もチェック:Pythonのschedモジュールの使い方、インストールのやり方を解説する
4. システム定数
psutil` モジュールは System 定数のチェックインを可能にし、特定の定数が利用するオペレーティングシステムで適用できるかどうかをブーリアン応答で提供します。
これを説明するために、Pythonを使用してテストしてみましょう。
# Importing the module import psutil
# Checking whether the operating system is Linux based print (psutil.LINUX)
# Windows based OS? print (psutil.WINDOWS)
|
私の場合、OSはWindowsベースでしたので、LINUXではFalse、WindowsではTrueというレスポンスが返ってきました。
この他にも、システム定数へのアクセスや、操作を進めるための検証チェック、どのOSの指示に従えばよいかの確認など、様々な機能があり、ドキュメントに記載されています。
まとめ
psutil` モジュールの使用方法は非常に簡単で、その使用方法はロギング情報を表示したり、システムでどのようにリソース消費が行われるかを調べるのに非常に便利です。
Pythonの他の記事、DataFrame、XMLパース、ファイル圧縮など、あなたの生活を楽にするためにPythonで使用できる様々なモジュールについてチェックしてみてください。