Flask + Jinja2:如何测量性能

3 投票
1 回答
2179 浏览
提问于 2025-04-17 07:23

我需要比较一下一个Flask应用程序中使用jinja2.Template.renderjinja2.Template.stream这两种方式的性能,想确认使用模板流式输出不会影响性能。

我(非常简单)的想法是,在渲染模板之前和之后打印时间戳,但因为网页是通过一个函数返回的,我不太确定该怎么实现这个...

我的函数是:

def index():
    """main function"""
    env = Environment(loader=FileSystemLoader(basedir+'templates'))
    #I modify the global variables
    env.globals['foo'] = 'bar'
    env.globals['build_response']=build_response
    get_url = request.args.get('to_print', None)
    message = "the input was \"%s\"" % (get_url,)
    template = env.get_template('body.html')
    return Response(template.stream(message=message))
    #return template.render(message=message)

而我需要测量的是

return template.render(message=message)

return Response(template.stream(message=message))

谢谢!

1 个回答

2

在调用之前和之后,你需要查看系统时钟。

如果你不立即返回template.render或template.stream的响应,这样做会更简单。

比如:

from time import time

def index():
    # THE REST OF YOUR CODE GOES HERE
    start = time.time()
    resp = template.render(message=message)
    end = time.time()
    processing_time = end - start
    # LOG PROCESSING TIME SOMEPLACE
    return resp

撰写回答