From 56f39f1be79f2811c936fd87ec5cea673592cddf Mon Sep 17 00:00:00 2001 From: 16337 <1633794139@qq.com> Date: Mon, 13 Apr 2026 10:21:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D:=20=E5=85=A8=E5=B1=80?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E7=BA=BF=E7=A8=8B=E5=AE=89=E5=85=A8=20+=20co?= =?UTF-8?q?py=E4=BF=9D=E6=8A=A4=20+=20=E5=9B=9E=E8=B0=83=E5=8F=AA=E6=B8=85?= =?UTF-8?q?=E9=99=A4=E5=8F=97=E5=BD=B1=E5=93=8D=E7=AE=97=E6=B3=95=E7=BC=93?= =?UTF-8?q?=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- algorithms.py | 3 ++- main.py | 9 ++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/algorithms.py b/algorithms.py index bf43bed..3e15344 100644 --- a/algorithms.py +++ b/algorithms.py @@ -2098,7 +2098,8 @@ class AlgorithmManager: algo_params = self.default_params.get(algorithm_type, {}).copy() # 三级合并:默认参数 → 全局参数 → 绑定级参数 - global_p = self._global_params.get(algorithm_type, {}) + with self._update_lock: + global_p = self._global_params.get(algorithm_type, {}).copy() if global_p: algo_params.update(global_p) if params: diff --git a/main.py b/main.py index b372b97..9b9c656 100644 --- a/main.py +++ b/main.py @@ -137,9 +137,12 @@ class EdgeInferenceService: if self._algorithm_manager: global_params = data.get("global_params", {}) self._algorithm_manager.update_global_params(global_params) - # 全局参数变更后需要清除注册缓存,使下一帧重新注册算法以应用新参数 - self._algorithm_manager._registered_keys.clear() - self._logger.info(f"全局参数回调已触发,已清除算法注册缓存") + # 只清除受影响算法的注册缓存,避免无关算法状态丢失 + affected_algos = set(global_params.keys()) + keys_to_remove = [k for k in self._algorithm_manager._registered_keys if k[2] in affected_algos] + for key in keys_to_remove: + self._algorithm_manager._registered_keys.discard(key) + self._logger.info(f"全局参数回调已触发,清除 {len(keys_to_remove)} 个受影响算法的注册缓存") self._config_manager.register_callback("global_params_update", _on_global_params_update) self._logger.info("配置管理器初始化成功") except Exception as e: