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
。