修复: 全局参数线程安全 + copy保护 + 回调只清除受影响算法缓存
This commit is contained in:
@@ -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:
|
||||
|
||||
9
main.py
9
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:
|
||||
|
||||
Reference in New Issue
Block a user