Jinja或python进行大量计算,这是更理想的,如果我选择在Jinja中进行性能影响

时间:2016-05-14 09:27:57

标签: python flask

我不时会面临选择在哪里进行循环和其他大量计算

考虑以下代码

isp_ratings_per_service =     db.session.query(func.count(Service_metric_ratings.ratings_id).label('count_of_users'), \
                                               func.sum(Service_metric_ratings.ratings_id).label('sum_of_ratings'),
                                               Isps.isp_name, Service_metric.metric_name, Services.service_name) \
        .filter(Service_metric_ratings.isp_id == Isps.isp_id) \
        .filter(Service_metric_ratings.ratings_id == Ratings.ratings_id) \
        .filter(Service_metric_ratings.metric_id == Service_metric.metric_id) \
        .filter(Service_metric_ratings.user_id == User.user_id) \
        .filter(Service_metric_ratings.service_id == Services.service_id) \
        .filter(Service_metric.metric_name == metric_name) \
        .filter(Services.service_name == service_name) \
        .group_by(Isps.isp_name)

这下面的循环,将获得我想要的烧瓶/ python路线

 for i in isp_ratings_per_service:
        my_count=i.count_of_users
        my_ratings=i.sum_of_ratings
        isp=i.isp_name

如果我想计算average_ratings,它将是

my_ratings/my_count

我可以将结果传递给jinja模板....就像这样没有问题

  return render_template('view_average_isp_ratings.html',
                               isp_ratings_per_service=isp_ratings_per_service,
                               count_of_users_who_rated=count_of_users_who_rated,
                               average_isp__service_ratings=average_isp__service_ratings,
                               )

接下来我的问题是,如果我使用jinja处理所有内容...会减慢我的应用程序..

1 个答案:

答案 0 :(得分:0)

根据Jinja2 docs,你应该尽量减少投入jinja的逻辑。在jinja中做一些逻辑很好并且使一切变得更容易,但在jinja中做所有这些似乎并不合理。