shortcut_key_windows

本文全面概述了信息技术领域的多个细分技术领域,包括前端开发、后端开发、移动开发、游戏开发、大数据开发、开发工具、嵌入式硬件、嵌入式电路知识、嵌入式开发环境、音视频基础、音视频直播流媒体、图像处理AR特效、AI音视频处理、测试、基础运维、DevOps、操作系统、云计算厂商、自然语言处理、区块链、隐私计算、文档协作与知识管理、版本控制、项目管理与协作工具、有监督学习、无监督学习、半监督学习、强化学习、数据安全、数据挖掘、数据结构、算法、非IT技术、自动推理、人工神经网络与计算、自动驾驶、数据分析、数据工程、程序设计方法、数据库理论、代码管理工具。

组合键

KEYFUNCTION
F1帮助
F2改名
F3搜索
F4地址
F5刷新
F6切换
F10菜单
CTRL+A全选
CTRL+C复制
CTRL+X剪切
CTRL+V粘贴
CTRL+Z撤消
CTRL+O打开
CTRL+Y恢复
CTRL+F4关闭
CTRL+F5强制刷新
CTRL+W关闭
CTRL+F查找
CTRL+ESC开始菜单
CTRL+ALT+DEL任务管理
CTRL+空格中英文输入切换
CTRL+Shift输入法切换
SHIFT+TAB反向切换
SHIFT+DELETE永久删除
DELETE删除
ALT+ENTER属性
ALT+F4关闭
ALT+TAB切换
ALT+ESC切换
ALT+空格键窗口菜单
Ctrl+1,2,3…切换到从左边数起第1,2,3…个标签
Ctrl+A全部选中当前页面内容
Ctrl+C复制当前选中内容
Ctrl+D打开“添加收藏”面版(把当前页面添加到收藏夹中)
Ctrl+E打开或关闭“搜索”侧边栏(各种搜索引擎可选)
Ctrl+F打开“查找”面版
Ctrl+G打开或关闭“简易收集”面板
Ctrl+H打开“历史”侧边栏
Ctrl+I打开“收藏夹”侧边栏/另:将所有垂直平铺或水平平铺或层叠的窗口恢复
Ctrl+K关闭除当前和锁定标签外的所有标签
Ctrl+L打开“打开”面版(可以在当前页面打开Iternet地址或其他文件…)
Ctrl+N新建一个空白窗口(可更改,Maxthon选项→标签→新建)
Ctrl+O打开“打开”面版(可以在当前页面打开Iternet地址或其他文件…)
Ctrl+P打开“打印”面板(可以打印网页,图片什么的…)
Ctrl+Q打开“添加到过滤列表”面板(将当前页面地址发送到过滤列表)
Ctrl+R刷新当前页面
Ctrl+S打开“保存网页”面板(可以将当前页面所有内容保存下来)
Ctrl+T垂直平铺所有窗口
Ctrl+V粘贴当前剪贴板内的内容
Ctrl+W关闭当前标签(窗口)
Ctrl+X剪切当前选中内容(一般只用于文本操作)
Ctrl+Y重做刚才动作(一般只用于文本操作)
Ctrl+Z撤消刚才动作(一般只用于文本操作)
Ctrl+F4关闭当前标签(窗口)
Ctrl+F5刷新当前页面
Ctrl+F6按页面打开的先后时间顺序向前切换标签(窗口)
Ctrl+F11隐藏或显示菜单栏
Ctrl+Tab以小菜单方式向下切换标签(窗口)
Ctrl+拖曳保存该链接的地址或已选中的文本或指定的图片到一个文件夹中(保存目录可更改,hon选项→保存)
Ctrl+小键盘’+’当前页面放大20%
Ctrl+小键盘’-‘当前页面缩小20%
Ctrl+小键盘’*’恢复当前页面的缩放为原始大小
Ctrl+Alt+S自动保存当前页面所有内容到指定文件夹(保存路径可更改,Maxthon选项→保存)
Ctrl+Shift+小键盘’+’所有页面放大20%
Ctrl+Shift+小键盘’-‘所有页面缩小20%
Ctrl+Shift+F输入焦点移到搜索栏
Ctrl+Shift+G关闭“简易收集”面板
Ctrl+Shift+H打开并激活到你设置的主页
Ctrl+Shift+N在新窗口中打开剪贴板中的地址,如果剪贴板中为文字,则调用搜索引擎搜索该文字(搜索引擎可选择,Maxthon选项→搜索)
Ctrl+Shift+S打开“保存网页”面板(可以将当前页面所有内容保存下来,等同于Ctrl+S)
Ctrl+Shift+W关闭除锁定标签外的全部标签(窗口)
Ctrl+Shift+F6按页面打开的先后时间顺序向后切换标签(窗口)
Ctrl+Shift+Tab以小菜单方式向上切换标签(窗口)
Alt+1保存当前表单
Alt+2保存为通用表单
Alt+A展开收藏夹列表

自然键盘

KEYFUNCTION
WIN显示或隐藏“开始”菜单
WIN+F1帮助
WIN+D显示桌面
WIN+R打开“运行”
WIN+E打开“我的电脑”
WIN+F搜索文件或文件夹
WIN+U打开“工具管理器”
WIN+BREAK显示“系统属性”
WIN+TAB在打开的项目之间切换
WIN+L屏幕锁定

运行命令 (WIN + R)

KEYFUNCTION
%temp%打开临时文件夹
.C:\DocumentsandSettings\用户名所在文件夹
..C:\DocumentsandSettings
我的电脑
\C盘
appwize.cpl添加、删除程序
access.cpl辅助功能选项
Accwiz辅助功能向导
cmdCMD命令提示符
commandCMD命令提示符
chkdsk.exeChkdsk磁盘检查
certmgr.msc证书管理实用程序
calc启动计算器
charmap启动字符映射表
cintsetp仓颉拼音输入法
cliconfgSQLSERVER客户端网络实用程序
clipbrd剪贴板查看器
control打开控制面板
conf启动netmeeting
compmgmt.msc计算机管理
cleanmgr垃圾整理
ciadv.msc索引服务程序
dcomcnfg打开系统组件服务
ddeshare打开DDE共享设置
dxdiag检查DirectX信息
drwtsn32系统医生
devmgmt.msc设备管理器
desk.cpl显示属性
dfrg.msc磁盘碎片整理程序
diskmgmt.msc磁盘管理实用程序
dvdplayDVD播放器
eventvwr事件查看器
eudcedit造字程序
explorer打开资源管理器
fsmgmt.msc共享文件夹管理器
firewall.cplWINDOWS防火墙
gpedit.msc组策略
hdwwiz.cpl添加硬件
iexpress木马捆绑工具,系统自带
inetcpl.cplINTETNET选项
intl.cpl区域和语言选项(输入法选项)
irprops.cpl无线链接
joy.cpl游戏控制器
lusrmgr.msc本机用户和组
logoff注销命令
main.cpl鼠标
mem.exe显示内存使用情况
migwiz文件转移向导
mlcfg32.cpl邮件
mplayer2简易widnowsmediaplayer
mspaint画图板
msconfig.exe系统配置实用程序
mstsc远程桌面连接
magnify放大镜实用程序
mmc打开控制台
mmsys.cpl声音和音频设备
mobsync同步命令
ncpa.cpl网络连接
nslookupIP地址侦测器
netstartX开始X服务
netstopX停止X服务
netstat-an命令检查接口
netsetup.cpl无线网络安装向导
notepad打开记事本
nslookupIP地址侦探器
narrator屏幕“讲述人”
ntbackup系统备份和还原
ntmsmgr.msc移动存储管理器
ntmsoprq.msc移动存储管理员操作请求
nusrmgr.cpl用户账户
nwc.cplNetWare客户服务
osk打开屏幕键盘
odbcad32ODBC数据源管理器
odbccp32.cplODBC数据源管理器
packager对象包装程序
perfmon.msc计算机性能监测程序
powercfg.cpl电源选项
progman程序管理器
regedit注册表
rsop.msc组策略结果集
regedt32注册表编辑器
regsvr32/?调用、卸载DLL文件运行(详细请在cmd中输入regsvr32/?)
sapi.cpl语音
services.msc本地服务设置
syncapp创建一个公文包
sysedit系统配置编辑器
sigverif文件签名验证程序
sndrec32录音机
sndvol32音量控制程序
shrpubw共享文件夹设置工具
secpol.msc本地安全策略
sysdm.cpl系统
syskey系统加密(一旦加密就不能解开,保护windowsxp系统的双重密码)
services.msc本地服务设置
sfc.exe系统文件检查器
shutdown关机命令(详细请在cmd中输入shutdown/?)
taskmgr任务管理器
telephon.cpl电话和调制解调器选项
telnet远程连接程序
timedate.cpl日期和时间
tourstartxp简介(安装完成后出现的漫游xp程序)
tsshutdn60秒倒计时关机命令
utilman辅助工具管理器
winver检查Windows版本
winmsd系统信息
wiaacmgr扫描仪和照相机向导
winchatXP自带局域网聊天
wmimgmt.msc打开windows管理体系结构(WMI)
wordpad写字板
wuaucpl.cpl自动更新
wupdmgrwindows更新程序
write写字板
wscriptwindows脚本宿主设置
wscui.cpl安全中心
sfc/scannowwindows文件保护
1.# E:\AI_System\utils\path_utils.py import os import re import json import time import logging from pathlib import Path # 尝试导入Windows相关模块 try: import win32com.client HAS_WIN32COM = True except ImportError: HAS_WIN32COM = False # 全局配置 _CONFIG = { "MODELS_ROOT": os.getenv("AI_MODELS_ROOT", "E:\\AI_Models"), # 可配置模型根目录 "CACHE_MAX_SIZE": 100, # 路径缓存最大条目 "MODEL_NAME_VARIANTS": ["-base", "-main", "", "_", "-", "."] # 模型名称变体规则 } # 路径缓存(带LRU淘汰机制) _path_cache = {} _cache_order = [] logger = logging.getLogger("PathUtils") logger.setLevel(logging.INFO) def normalize_path(path: str) -> str: """增强版路径标准化:处理环境变量、用户目录、相对路径和快捷方式""" if not path: return "" # 缓存检查(带自动清理) if path in _path_cache: if path in _cache_order: _cache_order.remove(path) _cache_order.append(path) # 更新使用时间 return _path_cache[path] # 环境变量替换 expanded = os.path.expandvars(os.path.expanduser(path)) # 快捷方式解析 if expanded.lower().endswith('.lnk'): try: target = resolve_shortcut(expanded) if target: expanded = target logger.info(f"🔗 解析快捷方式: {path} -> {expanded}") else: logger.warning(f"⚠️ 快捷方式解析失败: {path}") except Exception as e: logger.error(f"❌ 快捷方式解析异常: {path} - {str(e)}") # 绝对路径转换 abs_path = os.path.abspath(expanded) # 缓存管理 if len(_path_cache) >= _CONFIG["CACHE_MAX_SIZE"] and _cache_order: oldest = _cache_order.pop(0) del _path_cache[oldest] _path_cache[path] = abs_path _cache_order.append(path) return abs_path def resolve_shortcut(shortcut_path: str) -> str: """专用快捷方式解析函数(返回完整路径)""" if not HAS_WIN32COM: logger.error("❌ win32com未安装,无法解析快捷方式") return None try: shell = win32com.client.Dispatch("WScript.Shell") shortcut = shell.CreateShortcut(normalize_path(shortcut_path)) return shortcut.Targetpath except Exception as e: logger.error(f"❌ 快捷方式解析失败: {shortcut_path} - {str(e)}") return None def is_valid_hf_id(model_id: str) -> bool: """增强版HF ID验证""" if not isinstance(model_id, str) or '/' not in model_id: return False # 更宽松的用户名规则(允许数字开头) return all( re.match(r"^[\w\-\.]{3,50}$", part) for part in model_id.split('/', 1) ) def find_model_path(model_name: str) -> str: """智能模型路径查找(支持模糊匹配)""" base_dir = _CONFIG["MODELS_ROOT"] if not os.path.exists(base_dir): logger.warning(f"⚠️ 模型根目录不存在: {base_dir}") return None # 直接路径匹配 direct_path = os.path.join(base_dir, model_name) if os.path.exists(direct_path): return normalize_path(direct_path) # 生成候选名称变体 candidates = set() # 基础变体(大小写/符号) for sep in _CONFIG["MODEL_NAME_VARIANTS"]: candidates.add(model_name.lower() + sep) candidates.add(model_name.upper() + sep) candidates.add(model_name.replace("-", sep)) candidates.add(model_name.replace("_", sep)) # 添加子目录候选 for root, dirs, _ in os.walk(base_dir): for d in dirs: if model_name.lower() in d.lower(): candidates.add(os.path.join(root, d)) # 优先级匹配 for candidate in candidates: full_path = os.path.join(base_dir, candidate) if os.path.exists(full_path): logger.info(f"🔍 找到模型变体: {model_name} -> {candidate}") return normalize_path(full_path) # 低效但彻底的全盘扫描(仅限顶级目录) for item in os.listdir(base_dir): if model_name.lower() in item.lower(): full_path = os.path.join(base_dir, item) if os.path.isdir(full_path): return normalize_path(full_path) return None def get_all_model_paths() -> dict: """获取所有模型路径并缓存""" model_paths = {} base_dir = _CONFIG["MODELS_ROOT"] if not os.path.exists(base_dir): logger.warning(f"⚠️ 模型根目录不存在: {base_dir}") return model_paths cache_file = os.path.join(base_dir, ".model_paths.cache") # 缓存检查(1天内有效) if os.path.exists(cache_file): mtime = os.path.getmtime(cache_file) if time.time() - mtime < 86400: # 24小时 try: with open(cache_file, 'r', encoding='utf-8') as f: return json.load(f) except Exception as e: logger.error(f"❌ 缓存文件读取失败: {e}") # 重新扫描模型目录 for root, dirs, files in os.walk(base_dir): # 只收集包含模型文件的目录 model_files = [f for f in files if f.endswith(('.bin', '.safetensors', '.pth', '.pt', '.ckpt'))] if model_files: model_name = os.path.basename(root) model_paths[model_name] = normalize_path(root) # 写入缓存 try: with open(cache_file, 'w', encoding='utf-8') as f: json.dump(model_paths, f, ensure_ascii=False, indent=2) except Exception as e: logger.error(f"❌ 缓存文件写入失败: {e}") return model_paths def set_models_root(new_path: str): """动态设置模型根目录""" global _CONFIG normalized = normalize_path(new_path) if os.path.isdir(normalized): _CONFIG["MODELS_ROOT"] = normalized logger.info(f"🔄 更新模型根目录: {normalized}") clean_path_cache() else: logger.error(f"❌ 无效的模型目录: {new_path}") def clean_path_cache(): """增强版缓存清理""" global _path_cache, _cache_order _path_cache = {} _cache_order = [] logger.info("✅ 路径缓存已完全清除") def resolve_shortcut_robust(path: str) -> str: """解析Windows快捷方式(.lnk) - 修复版(多方法尝试)""" if not path.lower().endswith('.lnk'): return path # 方法1: 使用win32com (首选) if HAS_WIN32COM: try: shell = win32com.client.Dispatch("WScript.Shell") shortcut = shell.CreateShortcut(path) target = shortcut.Targetpath if target and os.path.exists(target): return target except Exception as e: logger.warning(f"win32com快捷方式解析失败: {path} - {e}") # 方法2: 手动解析 (备用) try: with open(path, 'rb') as f: content = f.read() # 查找目标路径的位置 (简化版) # 实际.lnk文件格式复杂,这里只是简单尝试 utf16_pos = content.find(b'\x00\x00\x00') if utf16_pos != -1: # 尝试提取UTF-16字符串 try: target = content[utf16_pos + 3:].split(b'\x00\x00')[0].decode('utf-16le', errors='ignore') if os.path.exists(target): return target except: pass # 尝试查找常见路径模式 for encoding in ['utf-16le', 'utf-8', 'latin-1']: try: decoded = content.decode(encoding, errors='ignore') # 查找看起来像路径的字符串 path_patterns = [ r"[A-Za-z]:\\[^<>:\"/\\|?*]{1,255}", r"\\\\[^<>:\"/\\|?*]{1,255}\\" ] for pattern in path_patterns: matches = re.findall(pattern, decoded) for match in matches: if os.path.exists(match): return match except: continue except Exception as e: logger.warning(f"手动快捷方式解析失败: {path} - {e}") return None # 兼容性别名 resolve_lnk = resolve_shortcut 2.# 添加快捷方式解析缓存 _SHORTCUT_CACHE = {} def resolve_shortcut(shortcut_path, max_retries=3): """带缓存和重试机制的快捷方式解析""" if shortcut_path in _SHORTCUT_CACHE: return _SHORTCUT_CACHE[shortcut_path] for _ in range(max_retries): try: import win32com.client shell = win32com.client.Dispatch("WScript.Shell") shortcut = shell.CreateShortCut(shortcut_path) target = shortcut.Targetpath if target and os.path.exists(target): _SHORTCUT_CACHE[shortcut_path] = target return target except Exception as e: time.sleep(0.1) # 短暂延迟后重试 return None
08-31
1.# E:\AI_System\agent\environment_interface.py import logging import time import queue import threading import json import os from typing import Any, Optional, Dict, List from agent.base_module import UnifiedCognitiveModule from core.message import Message, MessageType from utils.shortcut_utils import ShortcutUtils class EnvironmentInterface(UnifiedCognitiveModule): """环境交互接口 - 支持快捷方式解析的完整实现""" def __init__( self, name: str = "EnvironmentInterface", coordinator: Optional[Any] = None, config: Optional[Dict] = None ): super().__init__(name=name, coordinator=coordinator, config=config) # 配置参数 config = config or {} self.max_workers = config.get("max_workers", 4) self.response_timeout = config.get("response_timeout", 30.0) self.log_level = config.get("log_level", "INFO") self.workspace_path = config.get("workspace_path", "E:\\AI_Workspace") # 日志配置 self.logger = logging.getLogger("EnvironmentInterface") log_level = getattr(logging, self.log_level.upper(), logging.INFO) self.logger.setLevel(log_level) # 快捷方式工具 self.shortcut_utils = ShortcutUtils() # 工作区路径映射 self.path_mapping = self._init_path_mapping() # 输入输出队列 self.input_queue = queue.Queue() self.output_queue = queue.Queue() # 线程控制 self.running = True self.message_thread = threading.Thread(target=self._process_messages, daemon=True) self.message_thread.start() # 星型架构协调器引用 self.orchestrator = None def _init_path_mapping(self) -> Dict[str, str]: """初始化工作区路径映射""" mapping = {} # 定义工作区结构 workspace_structure = { "MODELS_DIR": "01_模型存储/主模型.lnk", "MODEL_DOWNLOADS": "01_模型存储/下载缓存.lnk", "AGENT_SYSTEM": "02_核心代码/Agent系统.lnk", "BACKUP_CODE": "02_核心代码/安全备份.lnk", "PYTHON_SCRIPTS": "03_前端交互/Python脚本.lnk", "WEB_UI": "03_前端交互/前端代码.lnk", "CONFIG_FILES": "03_前端交互/配置文件.lnk", "PYTHON_ENV": "04_环境工具/Python环境.lnk", "TEMP_PATCHES": "04_环境工具/临时补丁.lnk", "MEMORY_CORE": "05_数据记忆/记忆核心.lnk", "INITIAL_CODE": "06_历史备份/初始源码.lnk" } # 解析所有快捷方式 for key, rel_path in workspace_structure.items(): shortcut_path = os.path.join(self.workspace_path, rel_path) target_path = self.shortcut_utils.resolve_shortcut(shortcut_path) if target_path and os.path.exists(target_path): mapping[key] = target_path self.logger.info(f"映射工作区路径: {key} -> {target_path}") else: self.logger.warning(f"无法解析工作区路径: {key} ({shortcut_path})") return mapping def resolve_workspace_path(self, path_key: str) -> Optional[str]: """ 解析工作区路径 :param path_key: 路径键名 (如 "MODELS_DIR") :return: 实际路径或None """ return self.path_mapping.get(path_key) # ============ 关键修复:实现必需的抽象方法 ============ def process_command(self, command: str) -> dict: """处理命令 - 实现抽象方法""" self.logger.info(f"处理环境命令: {command}") # 特殊命令处理 if command == "workspace_status": return { "status": "success", "workspace": self.workspace_path, "mappings": self.path_mapping } elif command.startswith("resolve_path "): path_key = command[13:] # 移除 "resolve_path " 前缀 resolved_path = self.resolve_workspace_path(path_key) return { "status": "success" if resolved_path else "error", "key": path_key, "path": resolved_path } return { "status": "成功", "message": f"环境接口 '{self.name}' 已处理命令: {command}", "command": command } def connect(self) -> bool: """连接环境 - 实现抽象方法""" self.logger.info("连接到环境接口...") return True def disconnect(self): """断开连接 - 实现抽象方法""" self.logger.info("断开环境接口连接...") # 断开连接逻辑 # ============ 原有功能保持不变 ============ def set_orchestrator(self, orchestrator): """连接中枢协调器""" self.orchestrator = orchestrator def is_healthy(self) -> bool: """健康检查""" return self.running and self.message_thread.is_alive() def get_status(self) -> dict: """返回模块状态""" return { "status": "running" if self.running else "stopped", "module": self.name, "input_queue": self.input_queue.qsize(), "output_queue": self.output_queue.qsize(), "thread_alive": self.message_thread.is_alive(), "workspace_mappings": len(self.path_mapping) } def shutdown(self) -> bool: """关闭环境接口""" try: self.running = False if self.message_thread.is_alive(): self.message_thread.join(timeout=2.0) self.logger.info("🛑 环境接口已关闭") return True except Exception as e: self.logger.error(f"❌ 关闭失败: {str(e)}") return False # ... 其余方法保持不变 ... def process(self, input_data: Any) -> dict: """处理输入数据""" if isinstance(input_data, dict): self.add_input(input_data) return {"status": "queued"} elif isinstance(input_data, str): self.add_input({"command": input_data}) return {"status": "queued"} else: return {"error": "不支持的输入类型"} def _process_messages(self): """处理消息的后台线程""" while self.running: try: # 获取用户输入 user_input = self.get_input(timeout=0.5) if user_input: # 发送到协调器(星型架构) message = Message( msg_type=MessageType.EVENT, sender=self.name, content=user_input, target="CognitiveOrchestrator" # 直接发给协调器 ) # 通过协调器处理,如果没有协调器则尝试直接发送 if self.orchestrator: self.orchestrator.handle_message(message) else: self.logger.warning("⚠️ 协调器未连接,无法发送消息") self.logger.debug(f"📤 发送用户输入: {user_input['command'][:20]}...") # 处理输出队列 if not self.output_queue.empty(): output = self.output_queue.get_nowait() self._display_output(output) except Exception as e: self.logger.error(f"消息处理出错: {str(e)}") time.sleep(0.1) def handle_message(self, message: Message): """处理接收到的消息""" if message.target and message.target != self.name: return self.logger.debug(f"📩 收到消息 [{message.sender}]: {message.msg_type.name}") # 根据消息类型处理 if message.msg_type in [MessageType.DATA, MessageType.RESPONSE]: self.output(message.content) elif message.msg_type == MessageType.STATUS: self.logger.info(f"系统状态更新: {message.content}") def get_input(self, timeout: float = 0.5) -> Optional[Dict]: """获取输入""" try: return self.input_queue.get(timeout=timeout) except queue.Empty: return None def output(self, response: Any): """添加响应""" self.output_queue.put(response) def _display_output(self, response: Any): """格式化并显示输出""" try: # 处理不同类型的响应 if isinstance(response, dict): response.setdefault("timestamp", time.time()) response.setdefault("source", "system") response_str = json.dumps(response, ensure_ascii=False, indent=2) print(f"<< {response_str}") if "message" in response: self.logger.info(f"💬 系统响应: {response['message']}") else: self.logger.info("💬 系统响应: 无内容") elif isinstance(response, str): print(f"<< {response}") self.logger.info(f"💬 系统响应: {response}") elif isinstance(response, Message): print(f"<< [Message from {response.sender}]: {response.content[:50]}...") self.logger.info(f"💬 收到消息响应: {response.content[:50]}...") else: response_str = str(response) print(f"<< {response_str}") self.logger.info(f"💬 系统响应: {response_str}") except Exception as e: self.logger.error(f"输出响应失败: {str(e)}") def add_input(self, input_data: dict): """添加新输入""" if not isinstance(input_data, dict): self.logger.error("输入数据格式错误,必须是字典") return input_data.setdefault("timestamp", time.time()) input_data.setdefault("source", "user") self.input_queue.put(input_data) self.logger.debug(f"手动添加输入: {input_data['command'][:20]}...") def get_health_status(self) -> dict: """返回模块健康状态""" return { "status": "running" if self.running else "stopped", "module": self.name, "queue_size": self.input_queue.qsize(), "last_activity": time.time(), "output_queue_size": self.output_queue.qsize() } 2.# environment_interface.py class EnvironmentInterface: # ... 现有代码 ... def get_system_resources(self): """获取系统资源状态""" try: import psutil return { "cpu_percent": psutil.cpu_percent(), "memory_used": psutil.virtual_memory().percent, "gpu_memory": self._get_gpu_usage() } except ImportError: return {"error": "psutil未安装"} def _get_gpu_usage(self): """获取GPU使用情况""" if torch.cuda.is_available(): return { device: torch.cuda.memory_allocated(device) for device in range(torch.cuda.device_count()) } return {}
最新发布
09-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值