516
고성능 파이썬(2판)
PyPy
는 잘 작동하지만 결과는
C
파이썬과 비슷한 수준이다. 이는 웹 애플리케이션이 보통
I
/
O
위주이기 때문이다. 하지만
PyPy
에서
STM
이 개발됨에 따라, 멀티 코어 인스턴스 수준에서 규
모 가변성이 있는 이벤트 처리가 곧 가능해지리라 희망한다.
12.9.4
OCR
과 번역
C
파이썬
API
에 의존하는 확장에 문제가 있어서 테서랙트와 모세를 위한 순수 파이썬 라이브
러리를 작성했다.
PyPy
는
CPyExt
를 통해
C
파이썬
API
를 잘 지원하지만, 우리는 내부적으
로 벌어지는 일을 더 잘 제어하고 싶었다. 그 결과
C
파이썬보다 약간 더 빠른 코드로
PyPy
와
호환되는 솔루션을 만들었다. 더 빠르지 않은 이유는 대부분의 처리가 테서랙트와 모세의
C
/
C
++ 코드 수준에서 일어나기 때문이다. 우리가 속도를 높일 수 있는 부분은 오직 출력 처리
와 문서의 파이썬 구조를 만드는 부분뿐이었다. 이 단계에서는
PyPy
와의 호환성에서 큰 문제
가 없었다.
12.9.5
작업 배분과 작업자
셀러리를 사용하면 백그라운드에서 많은 작업을 실행할 수 있다. 전형적인 작업으로는
OCR
,
번역, 분석 등이 있다. 전체를 하둡
Hadoop
의 맵리듀스를 사용해 수행할 수도 있지만 프로젝트
요구사항이 자주 변경될 수 있음을 알았기에 셀러리를 선택했다.
작업자는
20
개 정도이며 각각은
10
~
20
개의 함수로 구성된다. 대부분의 함수는 루프나 여러
번 중첩된 루프를 포함한다.
JIT
컴파일러가 잘 작동할 수 있도록 가능하면 타입이 변하지 않게
신경 ...