Python 获取 Windows 系统进程信息的指南

在这一篇文章中,我们将逐步学习如何使用 Python 在 Windows 系统中获取进程信息。对于刚入行的小白而言,获取并理解进程信息是非常重要的,尤其是在进行系统监控或性能分析时。

我们将遵循以下步骤来实现这一目标:

步骤 描述
1 安装所需的库
2 导入库并获取进程列表
3 遍历进程并提取信息
4 输出结果

1. 安装所需的库

在Python中获取系统进程信息的常用库是 psutil。首先,需要确保这个库是安装好的。在命令行中执行以下命令:

pip install psutil

这样便安装了我们需要的 psutil 库。该库提供了一个Python接口来获取系统利用数据,极为强大且便利。

2. 导入库并获取进程列表

接下来,我们需要在我们的Python脚本中导入 psutil 库,并获取当前系统的所有进程。

import psutil

# 获取当前系统的所有进程
processes = psutil.pids()  
# psutil.pids() 返回当前系统所有活跃进程的ID

以上代码中的 psutil.pids() 函数会返回一个包含当前正在运行的所有进程ID的列表。

3. 遍历进程并提取信息

现在我们已经获取了进程的ID,接下来遍历这些ID,并提取我们关心的信息,比如进程名称、状态、CPU使用率、内存使用等。

for pid in processes:
    try:
        # 根据进程ID获取进程对象
        process = psutil.Process(pid)
        
        # 获取进程名称
        name = process.name()
        
        # 获取进程状态
        status = process.status() 
        
        # 获取CPU使用率
        cpu_usage = process.cpu_percent(interval=1)
        
        # 获取内存信息
        memory_info = process.memory_info()
        
        # 输出进程信息
        print(f'PID: {pid}, Name: {name}, Status: {status}, CPU Usage: {cpu_usage}%, Memory Info: {memory_info}')
    
    except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
        # 处理可能出现的异常
        pass  # 如果进程在获取信息时不存在或无法访问则跳过

在上面的代码中:

  • psutil.Process(pid) 创建了一个进程对象。
  • 然后使用 name(), status(), cpu_percent()memory_info() 方法分别获取进程的名称、状态、CPU 和内存信息。
  • 最后,使用格式化字符串输出这些信息。可能会遇到一些异常情况,所以使用 try...except 块来处理。

4. 输出结果

在配置好以上代码后,运行脚本即会输出当前运行的所有进程及其相关信息。例如,你可能会看到如下输出:

PID: 1234, Name: chrome.exe, Status: running, CPU Usage: 5.0%, Memory Info: pmem(rss=204800000, vms=512000000, shared=0, text=0, lib=0, data=0, dirty=0)
...

关系图

为了更清晰地展示获取进程信息的过程,以下是一个简单的关系图,使用 mermaid 语法描述:

erDiagram
    Process {
        int PID
        string Name
        string Status
        float CPU_Usage
        float Memory_Usage
    }

    User ||--o{ Process: "获取进程信息"

结尾

通过以上步骤,我们基本了解了如何利用Python获取Windows系统的进程信息。我们首先安装了psutil库,接着导入并调用相关函数,最后提取并输出进程的各类信息。这一过程不仅让我们掌握了如何与操作系统的进程进行互动,也为后续的系统监控打下了基础。

如果你在实践过程中有任何疑问,或者对代码的某些细节不清楚,欢迎随时向我提问。希望这篇文章能对你的学习之路有所帮助!