forked from MemTensor/MemOS
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutils.py
More file actions
29 lines (20 loc) · 742 Bytes
/
utils.py
File metadata and controls
29 lines (20 loc) · 742 Bytes
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
import time
from memos.log import get_logger
logger = get_logger(__name__)
def timed(func=None, *, log=False, log_prefix=""):
"""Decorator to measure and optionally log time of retrieval steps.
Can be used as @timed or @timed(log=True)
"""
def decorator(fn):
def wrapper(*args, **kwargs):
start = time.perf_counter()
result = fn(*args, **kwargs)
elapsed = time.perf_counter() - start
if log:
logger.info(f"[TIMER] {log_prefix or fn.__name__} took {elapsed:.2f} seconds")
return result
return wrapper
# Handle both @timed and @timed(log=True) cases
if func is None:
return decorator
return decorator(func)