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"

テンプレートを関数として渡そうとすると、失敗します。

ファイル "C:\Python27\lib\site-packages\numba\dispatcher.py"、123 行目、_compile_and_call で assert not kws AssertionError ; テンプレートを関数として呼び出すとエラーが発生する

4

1 に答える 1

1

サーバーを pypy で実行すると、テンプレートも高速化されます。テンプレートコードが動的に生成される方法のため、テンプレートに cython を使用することは現実的ではありません。私はnumbaに精通していませんが、エラーメッセージから、**kwargsトルネードテンプレートが広く使用する構造をサポートしていないようです. Cython にはオプションがありますalways_allow_keywords。numba にもっと単純なものがある場合は、それを使用できるかもしれませんが、そうでない場合はおそらく機能しません。

于 2014-07-27T14:01:16.040 に答える