如何在Python中终止正在运行的Windows进程?

WBOY
发布: 2023-09-14 13:57:02
转载
1598 人浏览过

如何在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:释放“子流程”模块的力量

Python 的“子进程”模块使我们能够生成新进程、与其输入/输出/错误管道建立连接以及检索其返回代码。我们可以利用该模块执行“taskkill”命令并有效终止正在运行的进程。

示例:利用“子流程”模块

在本例中,我们将演示使用强大的“子进程”模块终止记事本应用程序:

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”命令。在 Windows 命令 shell 中执行命令时,“shell=True”参数变得不可或缺。

结论

通过这次深入探索,我们阐明了使用 Python 终止 Windows 上正在运行的进程的三种不同方法。通过采用“os”模块,我们可以执行操作系统命令。 “psutil”库作为一个强大的工具出现,为我们提供了用于系统信息检索和流程操作的全面的跨平台解决方案。此外,“subprocess”模块解锁了新的维度,使我们能够毫不费力地生成进程并执行命令。

每种方法都有其自身的优点,适合特定的项目要求。在进行进程终止工作时,必须谨慎行事并了解由此带来的潜在风险,例如数据丢失或系统不稳定。

以上是如何在Python中终止正在运行的Windows进程?的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:tutorialspoint.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!