如何在 Python 中终止 Windows 上正在运行的进程?
在深入研究 Windows 操作系统上的 Python 开发领域时,无疑会出现需要终止正在运行的进程的情况。此类终止背后的动机可能涵盖各种场景,包括无响应、过度占用资源或仅仅需要停止脚本执行。在这篇综合文章中,我们将探讨使用 Python 在 Windows 上终止正在运行的进程的各种方法。通过利用“os”模块、“psutil”库和`subprocess`模块,我们将为自身配备一套多功能工具包来处理此项重要任务。
方法 1:使用多功能的“os”模块
`os` 模块是 Python 与操作系统交互的基石,拥有丰富的功能库。其中,`system()` 函数提供了一个执行操作系统命令的途径。值得注意的是,Windows 利用 `taskkill` 命令来终止活动进程。
示例:利用“os”模块
在接下来的示例中,我们将使用 `os` 模块来终止著名的记事本应用程序
import os # The process name to be brought to an abrupt halt process_name = "notepad.exe" # Employing the taskkill command to terminate the process result = os.system(f"taskkill /f /im {process_name}") if result == 0: print(f"Instance deletion successful: {process_name}") else: print("Error occurred while deleting the instance.")
输出
Deleting instance \DESKTOP-LI99O93\ROOT\CIMV2:Win32_Process.Handle="1234" Instance deletion successful.
此说明性代码片段使用 `taskkill` 命令以及`/f`(强制)和`/im`(图像名称)标志来强制终止由指定图像名称标识的进程。
方法 2:利用强大的“psutil”库
`psutil` 库提供了一个强大的跨平台工具集,用于访问系统信息和操作正在运行的进程。在深入利用 `psutil` 之前,我们必须首先确保它的存在,方法是执行以下安装命令
pip install psutil
成功安装后,我们可以利用 `psutil` 的功能来终止活动进程。
示例:利用“psutil”库
在接下来的示例中,我们将使用 `psutil` 库来终止著名的记事本应用程序
import psutil # The process name to be terminated process_name = "notepad.exe" # Iterating through all running processes for proc in psutil.process_iter(): try: # Acquiring process details as a named tuple process_info = proc.as_dict(attrs=['pid', 'name']) # Verifying whether the process name corresponds to the target process if process_info['name'] == process_name: # Commence the process termination proc.terminate() print(f"Instance deletion successful: {process_info}") except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess): # Prudently handling potential exceptions arising during process information retrieval pass
输出
Deleting instance \DESKTOP-LI99O93\ROOT\CIMV2:Win32_Process.Handle="5678" Instance deletion successful.
此示例片段阐明了我们的方法:我们使用 `psutil.process_iter()` 迭代所有正在运行的进程。通过利用 `as_dict()` 方法,我们以命名元组的形式获取进程信息。如果进程名称与目标进程一致,我们将立即通过 `terminate()` 方法终止它。
方法 3:释放“subprocess”模块的力量
Python 的“subprocess”模块使我们能够生成新进程,与它们的输入/输出/错误管道建立连接,并检索它们的返回代码。我们可以利用此模块执行 `taskkill` 命令并有效地终止正在运行的进程。
示例:利用“subprocess”模块
在本例中,我们将演示使用强大的“subprocess”模块终止记事本应用程序
import subprocess # The process name to be terminated process_name = "notepad.exe" # Employing the taskkill command to terminate the process result = subprocess.run(f"taskkill /f /im {process_name}", shell=True) if result.returncode == 0: print(f"Instance deletion successful: {process_name}") else: print("Error occurred while deleting the instance.")
输出
Deleting instance \DESKTOP-LI99O93\ROOT\CIMV2:Win32_Process.Handle="9012" Instance deletion successful.
在此示例中,我们依靠 `subprocess.run()` 函数来执行带有`/f` 和`/im` 标志的 `taskkill` 命令。 `shell=True` 参数在 Windows 命令 shell 中执行命令时变得不可或缺。
结论
在整个深入探讨中,我们阐明了三种不同的方法来使用 Python 终止 Windows 上正在运行的进程。通过使用 `os` 模块,我们能够执行操作系统命令。 `psutil` 库成为一个强大的工具,为我们提供了一个全面的、跨平台的解决方案,用于系统信息检索和进程操作。此外,“subprocess”模块开启了新的维度,使我们能够轻松地生成进程和执行命令。
每种方法都有其自身的优点,适合特定的项目需求。在进行进程终止工作时,务必谨慎行事,并了解其中可能存在的风险,例如数据丢失或系统不稳定。