0

是否可以使用 Cython、PyPy 或 Numba 加速模板中的循环?

{% for student in [p for p in people if p.student and p.age > 23] %}
  <li>{{ escape(student.name) }}</li>
{% end %}

我的意图是尝试循环是否可以更快地进行模板渲染。

Numba 中的一些东西可以尝试一下

def python_sum(y):
    N = len(y)
    x = y[0]
    for i in xrange(1,N):
        x += y[i]
    return x

numba_sum = autojit()(python_sum)
numba_sum.func_name = "numba_sum"

如果尝试将模板作为函数传递,则会失败。

_compile_and_call assert not kws AssertionError 中的文件“C:\Python27\lib\site-packages\numba\dispatcher.py”,第 123 行;当我将模板调用为函数时抛出错误

4

1 回答 1

1

如果你在 pypy 中运行服务器,模板也会被加速。由于模板代码是动态生成的,因此将 cython 用于模板是不可行的。我对 numba 不太熟悉,但从错误消息来看,它似乎不支持**kwargs龙卷风模板广泛使用的构造。Cython 有一个选择always_allow_keywords;如果 numba 有一些更简单的东西,你也许可以使用它,但如果没有,它可能无法工作。

于 2014-07-27T14:01:16.040 回答