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
。