欢迎访问宙启技术站
智能推送

用Python的psutil库实现系统进程的终止和杀死

发布时间:2023-12-11 16:15:58

psutil 是一个跨平台的过程和系统监视库,它可以使用 Python 进行进程管理。通过使用这个库,我们可以获取系统中所有运行中的进程的详细信息,包括 CPU 使用率、内存使用率等,并可以对这些进程进行操作,比如终止进程、杀死进程等。

首先,我们需要安装 psutil 库,可以使用以下命令来安装:

pip install psutil

下面是使用 psutil 库实现系统进程的终止和杀死的几个例子:

### 1. 获取系统中所有进程的信息

要获取系统中所有进程的详细信息,我们可以使用 psutil.process_iter() 方法,它返回一个生成器,可以用来迭代系统中所有的进程。每个进程对象都有一些常用的属性,如进程 ID、进程名、创建时间等,可以使用这些属性来获取有关进程的信息。

import psutil

for proc in psutil.process_iter(['pid', 'name', 'create_time']):
    print(f"Process ID: {proc.pid}")
    print(f"Process Name: {proc.name()}")
    print(f"Process Create Time: {proc.create_time()}
")

### 2. 根据进程名终止进程

可以根据进程名来终止一个进程。使用 psutil.process_iter() 方法,我们可以遍历所有进程,然后判断进程的名称是否匹配,如果匹配就终止该进程。

import psutil

def terminate_process_by_name(process_name):
    for proc in psutil.process_iter():
        try:
            if proc.name() == process_name:
                proc.terminate()
                print(f"Terminated process with name: {process_name}")
        except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
            pass

terminate_process_by_name("chrome.exe")

### 3. 根据进程 ID 终止进程

另一种方式是根据进程 ID 来终止进程。psutil 库的 Process 类可以接受一个进程 ID 作为参数,并提供了 terminate() 方法来终止该进程。

import psutil

def terminate_process_by_pid(pid):
    try:
        process = psutil.Process(pid)
        process.terminate()
        print(f"Terminated process with ID: {pid}")
    except (psutil.NoSuchProcess, psutil.AccessDenied):
        pass

terminate_process_by_pid(1234)

### 4. 根据进程名杀死进程

要杀死一个进程,而不是仅仅终止它,我们可以使用 kill() 方法。与终止进程的示例类似,我们可以使用 Process 类来获取进程对象,然后调用 kill() 方法杀死该进程。

import psutil

def kill_process_by_name(process_name):
    for proc in psutil.process_iter():
        try:
            if proc.name() == process_name:
                proc.kill()
                print(f"Killed process with name: {process_name}")
        except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
            pass

kill_process_by_name("chrome.exe")

### 5. 根据进程 ID 杀死进程

类似于终止进程,根据进程 ID 杀死进程也是使用 kill() 方法。以下示例根据进程 ID 杀死指定的进程。

import psutil

def kill_process_by_pid(pid):
    try:
        process = psutil.Process(pid)
        process.kill()
        print(f"Killed process with ID: {pid}")
    except (psutil.NoSuchProcess, psutil.AccessDenied):
        pass

kill_process_by_pid(1234)

以上是使用 psutil 库实现系统进程的终止和杀死的几个例子。通过使用 psutil 库,我们可以轻松地获取有关系统进程的信息,并对进程进行操作。在实际开发中,我们可以根据需要对进程进行管理,以满足特定的需求。