Files
desktop-transfer/utils/system_monitor.py
xiaji 136994db90 feat: 实现基于PySide6的翻译GUI工具初始版本
添加主程序入口、GUI界面、翻译核心逻辑、Word文件处理、系统监控和日志模块
2026-01-14 15:10:19 +08:00

57 lines
1.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import psutil
from .logger import logger
# 尝试导入GPUtil如果失败则设置has_gpu为False
try:
import GPUtil
GPUtil_available = True
except ImportError:
logger.warning("GPUtil模块未找到将禁用GPU监控")
GPUtil_available = False
class SystemMonitor:
def __init__(self):
self.cpu_usage = 0.0
self.memory_usage = 0.0
self.gpu_memory_usage = 0.0
self.has_gpu = self._check_gpu()
def _check_gpu(self):
"""检查是否有可用的GPU"""
if not GPUtil_available:
return False
try:
gpus = GPUtil.getGPUs()
return len(gpus) > 0
except Exception as e:
logger.warning(f"GPU检查失败: {e}")
return False
def update_metrics(self):
"""更新系统资源使用情况"""
try:
# 更新CPU使用率
self.cpu_usage = psutil.cpu_percent(interval=0.1)
# 更新内存使用率
memory = psutil.virtual_memory()
self.memory_usage = memory.percent
# 更新GPU内存使用率如果有GPU
if self.has_gpu:
try:
gpus = GPUtil.getGPUs()
if gpus:
self.gpu_memory_usage = gpus[0].memoryUtil * 100
except Exception as e:
logger.warning(f"GPU内存使用率获取失败: {e}")
except Exception as e:
logger.error(f"系统资源监控更新失败: {e}")
def get_status_text(self):
"""获取状态栏显示文本"""
self.update_metrics()
status = f"CPU: {self.cpu_usage:.1f}% | 内存: {self.memory_usage:.1f}%"
if self.has_gpu:
status += f" | GPU内存: {self.gpu_memory_usage:.1f}%"
return status