A simple decorator to find out the execution time of a function
Want to quickly check how long a function in a project takes to complete? To do this, you can use a simple decorator. (Yes, there is a django-debug-toolbar, but this example is enough for just a quick runtime check)
def view_function_timer(prefix='', writeto=print):
def decorator(func):
@functools.wraps(func)
def inner(*args, **kwargs):
try:
t0 = time.time()
return func(*args, **kwargs)
finally:
t1 = time.time()
writeto(
'View Function',
'({})'.format(prefix) if prefix else '',
func.__name__,
args[1:],
'Took',
'{:.2f}ms'.format(1000 * (t1 - t0)),
args[0].build_absolute_uri(),
)
return inner
return decorator
Using this decorator is also very simple:
from wherever import view_function_timer
@view_function_timer()
def homepage(request, thing):
...
return render(request, template, context)
When the function is executed, we get something like this:
View Function homepage ('valueofthing',) Took 23.22ms http://localhost:8000/home/valueofthingBack to Top