# -*- coding: utf-8 -*- """ 系统信息工具 提供系统信息采集功能。 """ import os import platform from datetime import datetime import psutil from constant import SUPPORT_FEATURE, SOFTWARE_VERSION, V2_DEFAULT_CAPABILITIES def get_sys_info(): """ 获取系统信息(v1 格式) Returns: dict: 系统信息字典 """ info = { 'version': SOFTWARE_VERSION, 'client_datetime': datetime.now().isoformat(), 'platform': platform.system(), 'runtime_version': 'Python ' + platform.python_version(), 'cpu_count': os.cpu_count(), 'cpu_usage': psutil.cpu_percent(), 'memory_total': psutil.virtual_memory().total, 'memory_available': psutil.virtual_memory().available, 'support_feature': SUPPORT_FEATURE } return info def get_sys_info_v2(): """ 获取系统信息(v2 格式) Returns: dict: v2 API 所需的系统信息字典 """ mem = psutil.virtual_memory() info = { 'os': platform.system(), 'cpu': f"{os.cpu_count()} cores", 'memory': f"{mem.total // (1024**3)}GB", 'cpuUsage': f"{psutil.cpu_percent()}%", 'memoryAvailable': f"{mem.available // (1024**3)}GB", 'platform': platform.system(), 'pythonVersion': platform.python_version(), } # 尝试获取 GPU 信息 gpu_info = _get_gpu_info() if gpu_info: info['gpu'] = gpu_info return info def get_capabilities(): """ 获取 Worker 支持的能力列表 Returns: list: 能力列表 """ return V2_DEFAULT_CAPABILITIES.copy() def _get_gpu_info(): """ 尝试获取 GPU 信息 Returns: str: GPU 信息,失败返回 None """ try: import subprocess # 尝试使用 nvidia-smi result = subprocess.run( ['nvidia-smi', '--query-gpu=name', '--format=csv,noheader'], capture_output=True, text=True, timeout=5 ) if result.returncode == 0: gpu_name = result.stdout.strip().split('\n')[0] return gpu_name except Exception: pass return None