修复: 全局参数线程安全 + copy保护 + 回调只清除受影响算法缓存

This commit is contained in:
2026-04-13 10:21:19 +08:00
parent 3266241064
commit 56f39f1be7
2 changed files with 8 additions and 4 deletions

View File

@@ -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:

View File

@@ -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: