이 질문은 여러 번 SO (예 : here)로 요청되었지만 아직 실제 답변이 없습니다.파이썬 가져 오기 속도를 향상시키는 방법은 무엇입니까?
템플릿을 렌더링하는 짧은 명령 줄 도구를 쓰고 있습니다. 그것은 메이크 물건 만하다는 사용된다
이 예에서는 더미i = $(wildcard *.in)
o = $(patsubst %.in, %.out, $(t))
all: $(o)
%.out: %.in
./script.py -o [email protected] $<
는 메이크는 .out
파일을 생성하기 위해 모든 .in
파일을 파싱한다. make
을 사용하는 것이 매우 편리합니다. 왜냐하면이 스크립트 전후에 다른 작업을 수행해야하기 때문입니다. 또한 가능한 한 KISS으로 남고 싶습니다. 문제는 각 점이다
#!/usr/bin/env python
from jinja2 import Template, nodes
from jinja2.ext import Extension
import hiyapyco
import argparse
import re
...
:
따라서, 나는 별도로
script -o out in
내 스크립트는 다음 사용하는 구문을 사용하여 바보, 간단한 내 도구를 유지하려는 각 파일을 처리 실행은 약 1.2 초 (가공에 대해서는 ~60ms, 수입 지침에 대해서는 ~1140ms)가 걸립니다.
$ time ./script.py -o foo.out foo.in
real 0m1.625s
user 0m0.452s
sys 0m1.185s
내 파일의 100 개 파일에 대한 전체 실행은 말도 안됩니다 : ~ 100 개의 파일 x 1.2s = 120s.
이것은 해결책은 아니지만 해결책이되어야합니다.
어떤 대안을 사용할 수 있습니까?
편집
구문 읽을 수 및 지역 사회의 크기 때문에 파이썬을 사랑 해요. 이 특별한 경우 (명령 줄 도구)에서는 Perl이 여전히 괜찮은 대안이라는 것을 인정해야합니다. Perl로 작성된 동일한 스크립트 (해석 언어이기도 함)는 약 12 배 빠릅니다 (Text::Xslate
사용).
어쨌든 펄을 홍보하고 싶지는 않습니다. 필자는 파이썬으로 가장 큰 문제를 해결하기 위해 노력하고 있습니다. 가져 오기 시간이 짧기 때문에 간단한 명령 행 도구로는 아직 적합하지 않습니다.
[Code Review] (http://codereview.stackexchange.com/)에 더 적합합니다. 만큼 완벽하게 작동하는 예제 – muddyfish
@muddyfish 이것은 Python으로 작성된 CLI 도구와 관련이 있으므로 코드 검토 질문이 아닙니다. – nowox
질문에 대한 해결책은 아니지만 처음에는 병렬로 작업하는 것이 어떻습니까? 당신의 문제를 해결할 수 있습니다. –