实现任务管理器中Python运行的详细信息

在计算机中,我们常常需要监视应用程序的运行状态,包括内存使用、CPU占用等信息。Python程序也不例外,能够监控Python进程并展示它的详细信息是一项非常实用的技能。在本教程中,我们将一步一步地实现这个目标。

流程概述

下面的表格简要地展示了我们要执行的步骤:

步骤 描述
1 安装依赖库
2 编写脚本以获取进程信息
3 提取和展示特定的运行信息
4 完善用户界面及输出格式

步骤详解

步骤 1: 安装依赖库

首先,我们需要安装一些依赖库以获取进程的详细信息。我们会使用psutil库,这是一个跨平台的库,可以用于获取系统和进程信息。可以用以下命令安装它:

pip install psutil

这行代码的作用是通过pip包管理器安装名为psutil的库。

步骤 2: 编写脚本以获取进程信息

接下来,我们需要编写Python脚本以获取当前运行的Python进程。以下是基本的代码:

import psutil  # 导入psutil库

def get_python_processes():
    python_processes = []  # 创建一个空列表以存储Python进程
    for process in psutil.process_iter(['pid', 'name', 'cpu_percent', 'memory_info']):
        try:
            # 筛选出名字包含'python'的进程
            if 'python' in process.info['name'].lower():
                python_processes.append(process.info)  # 添加到列表中
        except (psutil.NoSuchProcess, psutil.AccessDenied):
            # 处理异常
            pass
    return python_processes  # 返回所有Python进程的信息

psutil.process_iter用于迭代系统中所有进程,返回包含所需信息的字典。而我们使用try...except结构来处理可能出现的异常,例如访问被拒绝的进程。

步骤 3: 提取和展示特定的运行信息

在获取了Python进程的信息后,我们需要从中提取 CPU 使用率和内存信息,并以友好的格式展示给用户。下面是实现这一功能的代码:

def display_processes_info(python_processes):
    if not python_processes:
        print("没有找到任何正在运行的Python进程。")
        return

    print(f"{'PID':<10} {'Name':<25} {'CPU%':<10} {'Memory (MB)':<15}")
    print("=" * 70)  # 打印分隔符
    for process in python_processes:
        # 将内存信息转换为MB
        memory_mb = process['memory_info'].rss / (1024 * 1024)
        print(f"{process['pid']:<10} {process['name']:<25} {process['cpu_percent']:<10} {memory_mb:<15.2f}")  # 格式化输出

这里我们定义了display_processes_info函数,用于打印出每个Python进程的PID、名称、CPU使用率和内存信息。

步骤 4: 完善用户界面及输出格式

最后,我们需要将之前的功能整合在一起,创建一个主程序来运行代码:

if __name__ == "__main__":
    python_processes = get_python_processes()  # 获取Python进程信息
    display_processes_info(python_processes)  # 显示信息

此部分代码会在直接运行脚本时执行,不会在模块导入时执行。它会调用我们的两个函数并打印信息。

状态图

在这部分,我们可以用Mermaid语法展示上述程序的状态流图:

stateDiagram
    [*] --> 获取Python进程信息
    获取Python进程信息 --> 展示进程信息
    展示进程信息 --> [*]

结尾

通过以上步骤,我们成功编写了一个Python脚本,可以实时监测并展示系统中所有正在运行的Python进程的详细信息。我们不仅掌握了如何使用psutil库来获取系统信息,还掌握了如何把信息格式化输出给用户。这项技能在开发过程中极为重要,可以帮助我们调试和优化程序。

希望这篇文章能够帮助你更深入地理解Python与系统监控的结合,做出更加高效和优质的程序。继续加油,你会在开发的旅程中发现更多有趣的东西!