Pythonを使って、プロセスの取得や強制終了する方法についてご紹介します。
Windowsのタスクマネージャーから現在実行中のプロセスリストを取得し処理を実行します。
ぜひお試しください😉
プロセス一覧取得する
Windows OS上で動作するPythonコードです。
現在実行中のプロセスの一覧を取得し、プロセスの名前、プロセスID、メモリ使用量、およびCPU使用量を出力します。
import psutil
# 現在実行されているすべてのプロセスを取得
processes = list(psutil.process_iter())
# 実行中のすべてのプロセスについてループ
for process in processes:
try:
# プロセスの名前、プロセスID、メモリ使用量、およびCPU使用量を出力
process_name = process.name()
process_id = process.pid
memory_info = process.memory_info().rss
cpu_percent = process.cpu_percent()
print(f"Name: {process_name}, PID: {process_id}, Memory Usage: {memory_info}, CPU Usage: {cpu_percent}")
except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
# プロセスがすでに終了している、アクセスが拒否されている、またはZombieプロセスの場合、処理を続行する
continue
コード実行後
実行中のプロセス名、プロセスID、メモリ使用量、およびCPU使用量の一覧を表示します。
Windowsのタスクマネージャの「詳細」のリストが、コマンドプロンプトに出力されます。
「詳細」のプロセス名は、コマンドプロンプトの出力と同じ順番では並んでいません。
プロセスを強制終了する
Windowsで現在実行中のプロセスを取得し、特定のプロセスがあれば強制的に終了します。
ただし、プロセスを強制終了することはプログラムに悪影響を与える可能性があるため、
慎重に使用する必要があります。
import subprocess
# タスクマネージャーのプロセスを取得
proc = subprocess.Popen('tasklist', shell=True, stdout=subprocess.PIPE)
# 実行中のプロセスを1つずつループ
for line in proc.stdout:
# バイト列を文字列に変換して、空白で分割する
parts = line.decode('shift-jis').split()
# プロセス名が「Notepad.exe」または「Screenpresso.exe」だったら、プロセスIDを取得して終了
if 'Notepad.exe' in parts or 'Screenpresso.exe' in parts:
pid = int(parts[1])
subprocess.call(['taskkill', '/F', '/PID', str(pid)])
コード実行前
現在実行しているプロセス「Notepad.exe」と「Screenpresso.exe」をタスクマネージャーから確認してみます。2つとも起動している状態です。
コード実行後
コマンドプロンプトに「成功:PID 〇〇 のプロセスは強制終了されました」と表示されます。
現在実行中のプロセス「Notepad.exe」と「Screenpresso.exe」を強制終了しました。
タスクマネージャーの「詳細」に「Notepad.exe」と「Screenpresso.exe」は、
表示されなくなりました。
強制終了したプロセスは、再度起動すればタスクマネージャーに表示されます。
動作環境
Python 3.11
Windows 11
この記事がお役に立ちますと幸いです。
・【Python】エクセルを自動処理する方法まとめ
「Python 1年生 体験してわかる!会話でまなべる!」
初めての方でも安心して取り組めるように丁寧に解説
簡単なサンプルを作りながら、対話形式でプログラミングまで紹介
人工知能の導入としてもオススメの1冊です!