
173
부록
B
보충 자료
B.5
Sanic
예제를 위한 보충 자료:
aelapsed
와
aprofiler
4
장의
Sanic
사례 연구에서 함수 실행에 소요된 시간을 출력하는 데커레이터를 사용했었다.
[예제
B
-
5
]에서 확인할 수 있다.
예제
B-5
perf
.
py
# perf.py
import logging
from time import perf_counter
from inspect import iscoroutinefunction
logger = logging.getLogger('perf')
def aelapsed(corofn, caption=''): #①
async def wrapper(*args, **kwargs):
t0 = perf_counter()
result = await corofn(*args, **kwargs)
delta = (perf_counter() - t0) * 1e3
logger.info(
f'{caption} Elapsed: {delta:.2f} ms')
return result
return wrapper
def aprofiler(cls, bases, members): #②
for k, v in members.items():
if iscoroutinefunction(v):
members[k] = aelapsed(v, ...