Unverified Commit 92ad41ce authored by Xiaomeng Zhao's avatar Xiaomeng Zhao Committed by GitHub
Browse files

Merge pull request #1193 from myhloli/dev

perf(model): add threading lock for OCR model initialization
parents 41b9cbcd 04478095
...@@ -82,9 +82,12 @@ def ocr_model_init(show_log: bool = False, ...@@ -82,9 +82,12 @@ def ocr_model_init(show_log: bool = False,
return model return model
from threading import Lock
class AtomModelSingleton: class AtomModelSingleton:
_instance = None _instance = None
_models = {} _models = {}
_lock = Lock()
def __new__(cls, *args, **kwargs): def __new__(cls, *args, **kwargs):
if cls._instance is None: if cls._instance is None:
...@@ -95,8 +98,13 @@ class AtomModelSingleton: ...@@ -95,8 +98,13 @@ class AtomModelSingleton:
lang = kwargs.get('lang', None) lang = kwargs.get('lang', None)
layout_model_name = kwargs.get('layout_model_name', None) layout_model_name = kwargs.get('layout_model_name', None)
key = (atom_model_name, layout_model_name, lang) key = (atom_model_name, layout_model_name, lang)
if key not in self._models: if atom_model_name == AtomicModel.OCR:
self._models[key] = atom_model_init(model_name=atom_model_name, **kwargs) with self._lock:
if key not in self._models:
self._models[key] = atom_model_init(model_name=atom_model_name, **kwargs)
else:
if key not in self._models:
self._models[key] = atom_model_init(model_name=atom_model_name, **kwargs)
return self._models[key] return self._models[key]
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment