实现任务管理器中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与系统监控的结合,做出更加高效和优质的程序。继续加油,你会在开发的旅程中发现更多有趣的东西!