File size: 920 Bytes
5c61354
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from mlpipeline.pipeline.prediction_pipeline import PredictionPipeline
from threading import Lock


class ModelLoader:
    _instance = None
    _lock = Lock()
    
    def __new__(cls):
        if cls._instance is None:
            with cls._lock:
                if cls._instance is None:
                    cls._instance = super().__new__(cls)
                    cls._instance.pipeline = None
        return cls._instance
    
    def get_pipeline(self) -> PredictionPipeline:
        if self.pipeline is None:
            self.pipeline = PredictionPipeline()
            self.pipeline.load_model()
        return self.pipeline
    
    def reload_model(self):
        self.pipeline = PredictionPipeline()
        self.pipeline.load_model()
        return self.pipeline
    
    def is_loaded(self) -> bool:
        return self.pipeline is not None and self.pipeline.model is not None


model_loader = ModelLoader()