# -*- coding: utf-8 -*-
"""
@author: yq
@time: 2024/11/1
@desc: 监控报告
"""
import threading
from typing import Dict

from entitys import ModelMonitorConfigEntity, MetricFucEntity


class MonitorModel():

    def __init__(self, model_monitor_config: ModelMonitorConfigEntity):
        self._model_monitor_config = model_monitor_config
        self.lock = threading.Lock()
        self._metric_value_dict: Dict[str, MetricFucEntity] = {}

    def _update_metric_value_dict(self, key, value):
        with self.lock:
            self._metric_value_dict[key] = value

    #  TODO 多线程计算指标
    def calculate_metric(self):
        metric_dict = self._model_monitor_config.metric_dict
        for metric_code, metric_clazz in metric_dict.items():
            metric_value = metric_clazz.calculate()
            self._update_metric_value_dict(metric_code, metric_value)


if __name__ == "__main__":
    pass