2014-07-27 2 views
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; 템플릿을 함수로 호출하면 오류가 발생합니다.

+0

정확히 무엇이 실패합니까? – Kris

+0

파일 "C : \ Python27 \ lib \ site-packages \ numba \ dispatcher.py", 줄 123, _compile_and_call에서 assert not kws AssertionError; 템플릿을 함수로 호출하면 오류가 발생합니다. –

답변

1

pypy에서 서버를 실행하면 템플릿도 빨라집니다. 템플릿 코드가 동적으로 생성되는 방식 때문에 템플릿에 cython을 사용할 수 없습니다. numba에 익숙하지 않지만 오류 메시지에서 마치 토네이도 템플릿이 광범위하게 사용하는 **kwargs 구조를 지원하지 않는 것처럼 보입니다. Cython에는 옵션 always_allow_keywords이 있습니다. numba가 좀 더 단순하다면 사용할 수는 있지만 그렇지 않으면 작동하지 않을 것입니다.