使用 Python 按名称终止进程
pythonserver side programmingprogramming
简介
进程是编程领域管理系统资源的重要组成部分。如果进程行为异常或使用的资源超过必要,您可能偶尔需要停止该进程。对于这些类型的系统级活动,Python 提供了大量工具。在这篇文章中,我们将向您展示如何使用 Python 按名称终止进程。
Python 和系统进程
凭借其广泛的库和模块,Python 是一种非常灵活的语言,超越了简单的脚本或 Web 编程。通过 os 和 psutil 等库,您可以与进程管理等系统级功能进行交互。
使用 Psutil 库
"进程和系统实用程序"(psutil) 库将用于控制系统进程。它是一个用于获取进程和系统信息的跨平台库。使用 pip,您可以安装 psutil(如果您尚未安装) −
pip install psutil
按名称查找进程
必须先找到进程,然后才能终止它。使用 psutil.process_iter() 和 psutil,我们可以通过名称找到进程的所有实例。Process.name() −
import psutil def get_processes_by_name(name): """Return a list of processes matching 'name'.""" matching_processes = [proc for proc in psutil.process_iter(['name']) if proc.info['name'] == name] return matching_processes
此函数将返回具有指定名称的进程实例列表。
按名称终止进程
我们现在可以构造一个函数来停止这些进程,因为我们可以通过名称发现它们。我们将在循环遍历进程列表时使用 kill() 技术 −
def kill_processes(processes): """Attempt to kill all 'processes'.""" for proc in processes: try: proc.kill() except psutil.NoSuchProcess: print(f"No such process: {proc.pid}") except psutil.AccessDenied: print(f"Access denied to {proc.pid}")
我们在此方法中捕获可能在进程结束后抛出的异常,如 NoSuchProcess 和 AccessDenied。
将所有内容整合在一起
这些操作可用于编写结束进程所有实例的脚本 −
import psutil def get_processes_by_name(name): """Return a list of processes matching 'name'.""" matching_processes = [proc for proc in psutil.process_iter(['name']) if proc.info['name'] == name] return matching_processes def kill_processes(processes): """Attempt to kill all 'processes'.""" for proc in processes: try: proc.kill() except psutil.NoSuchProcess: print(f"No such process: {proc.pid}") except psutil.AccessDenied: print(f"Access denied to {proc.pid}") process_name = "process_to_kill" processes_to_kill = get_processes_by_name(process_name) kill_processes(processes_to_kill)
此脚本将查找并终止所有 process_to_kill 实例。
结论
Python 广泛的标准库和第三方模块可实现高效的系统交互和进程操作。我们可以使用 psutil 库轻松管理系统进程,包括按名称终止它们。由于这种能力,Python 在系统管理任务和脚本方面表现出色,进一步巩固了其作为灵活而强大的编程语言的声誉。