face-intel / metrics /counters.py
Marwan
Restructure + add reverse face search (PimEyes-style)
f5eeb1c
Raw
History Blame Contribute Delete
810 Bytes
"""
Global monotonic counters — cache hits/misses, requests, errors.
"""
from __future__ import annotations
import threading
from collections import defaultdict
from typing import Dict
class CounterRegistry:
"""Named integer counters."""
def __init__(self) -> None:
self._lock = threading.RLock()
self._counters: Dict[str, int] = defaultdict(int)
def inc(self, name: str, amount: int = 1) -> None:
with self._lock:
self._counters[name] += amount
def get(self, name: str) -> int:
with self._lock:
return self._counters.get(name, 0)
def snapshot(self) -> Dict[str, int]:
with self._lock:
return dict(self._counters)
def reset(self) -> None:
with self._lock:
self._counters.clear()