mirror of
https://github.com/A-Minos/nonebot-plugin-tetris-stats.git
synced 2026-02-03 18:45:32 +08:00
22 lines
593 B
Python
22 lines
593 B
Python
from collections.abc import Callable, Coroutine
|
|
from functools import wraps
|
|
from time import time_ns
|
|
from typing import Any, ParamSpec, TypeVar
|
|
|
|
from nonebot.log import logger
|
|
|
|
T = TypeVar('T')
|
|
P = ParamSpec('P')
|
|
|
|
|
|
def time_it(func: Callable[P, Coroutine[Any, Any, T]]) -> Callable[P, Coroutine[Any, Any, T]]:
|
|
@wraps(func)
|
|
async def wrapper(*args: P.args, **kwargs: P.kwargs) -> T:
|
|
start = time_ns()
|
|
try:
|
|
return await func(*args, **kwargs)
|
|
finally:
|
|
logger.debug(f'{func.__name__} took {(time_ns() - start) / 1e6}ms')
|
|
|
|
return wrapper
|