diff --git a/pixelocr/utils.py b/pixelocr/utils.py index 4a6c98e..239f10e 100644 --- a/pixelocr/utils.py +++ b/pixelocr/utils.py @@ -16,20 +16,18 @@ import functools import itertools +from collections import defaultdict from threading import Lock def cached_property(fun): """A memoize decorator for class properties.""" lock = Lock() - locks = {} + locks = defaultdict(Lock) @functools.wraps(fun) def get(self): with lock: - try: - obj_lock = self._lock - except AttributeError: - obj_lock = self._lock = Lock() + obj_lock = locks[self, fun] with obj_lock: try: cache = self._cache