python:decorator
Python: Decorator
함수 실행시간 측정
from functools import wraps def elapsed_time(func): import time @wraps(func) def wrapped(*args, **kwargs): start_time = time.perf_counter() returns = func(*args, **kwargs) end_time = time.perf_counter() print('{} -> elased time: {:.3f}'.format(func.__name__, end_time - start_time)) return returns return wrapped @elapsed_time def test_sleep(t): import time time.sleep(t) return True
Logger wrapping
terminal 창의 마지막 줄에 elapsed time을 계속 표시함
def logger_info_with_state_bar(func): global start_time def wrapped(msg): columns = os.get_terminal_size().columns print(Fore.RESET + Back.RESET + ' ' * (columns - 1), end='\r') func(msg) status = 'elapsed time: {}'.format(time.time() - start_time) if len(status) < (columns - 1): status += ' ' * (columns - len(status) - 1) print(Back.GREEN + Fore.BLACK + status + Fore.RESET + Back.RESET, end='\r') return wrapped logger.info = logger_info_with_state_bar(logger.info)
Decorator with parameters
def decorator_factory(argument): def decorator(function): def wrapper(*args, **kwargs): funny_stuff() something_with_argument(argument) result = function(*args, **kwargs) more_funny_stuff() return result return wrapper return decorator # https://stackoverflow.com/questions/5929107/decorators-with-parameters
튜토리얼
python/decorator.txt · 마지막으로 수정됨: 2024/03/23 02:42 저자 127.0.0.1