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: