python

psutil python如何处理异常情况

小樊
83
2024-12-06 20:40:18
栏目: 编程语言

psutil 是一个 Python 库,用于获取系统信息,如 CPU、内存、磁盘和网络使用情况等。在使用 psutil 时,可能会遇到一些异常情况,例如权限问题、进程不存在等。为了处理这些异常情况,我们可以使用 Python 的异常处理机制,如 try-except 语句。

以下是一个简单的示例,展示了如何使用 psutil 处理异常情况:

import psutil

def get_process_info(process_name):
    try:
        # 获取所有进程
        processes = psutil.process_iter()

        # 遍历进程列表,查找指定名称的进程
        for process in processes:
            try:
                # 获取进程信息
                process_info = process.as_dict(attrs=['pid', 'name', 'cpu_times'])

                # 检查进程名称是否匹配
                if process_info['name'] == process_name:
                    return process_info
            except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
                # 忽略这些异常,继续查找下一个进程
                continue

        # 如果没有找到匹配的进程,返回 None
        return None

    except psutil.NoSuchProcess:
        print(f"进程 {process_name} 不存在")
    except psutil.AccessDenied:
        print(f"没有权限获取进程 {process_name} 的信息")
    except Exception as e:
        print(f"发生未知错误: {e}")

# 示例:查找名为 "notepad.exe" 的进程
process_info = get_process_info("notepad.exe")
if process_info:
    print(process_info)
else:
    print("未找到匹配的进程")

在这个示例中,我们定义了一个名为 get_process_info 的函数,该函数接受一个进程名称作为参数。我们使用 try-except 语句来捕获可能发生的异常,如 psutil.NoSuchProcess(进程不存在)、psutil.AccessDenied(没有权限获取进程信息)和 psutil.ZombieProcess(僵尸进程)。如果发生这些异常,我们会输出相应的错误信息,并继续查找下一个进程。如果没有找到匹配的进程,函数将返回 None

0
看了该问题的人还看了