관심있는 것들 정리
[리뷰] 고성능 프로그래밍을 위한 필독서(파이썬) 본문
한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.
C/C++와 같은 언어로 프로그램을 작성하다가, Python이나 Ruby와 같은 Script 언어를 사용해 보면, 복잡한 기능을 몇 줄 안 되는 코딩 만으로도 수행할 수 있는 점에 놀라면서 여러가지 프로그램을 Script 언어로 작성해 보기 시작한다. 하지만, utility 수준의 프로그램을 벗어나서, 본격적으로 main 프로그래밍 언어로서 사용하려 했을 때, 성능 문제에 부닥치게 된다. 보통 Script 언어가 성능은 컴파일 언어들에 비해 떨어지지만, 개발 기간을 줄일 수 있기 때문에 더 이득이라고 하는 분들도 있지만, 이 역시 어떤 도메인에서 개발을 하느냐에 따라 달라질 수 있는 이야기이기 때문에 항상 맞는 이야기다 라고 할 수가 없다.
Python을 이용하는 분야가 다양해지고, 성능이 중요한 다양한 분야에서도 Python을 이용해 다양한 테스트를 수행하려는 시도가 늘어남에 따라, Numpy, Pandas, Pypy 등과 같은 사용하기 편리하면서도 빠른 성능을 제공하는 모듈이 생겨났고, 이러한 모듈들을 이용하여 성능에 대한 제약을 극복하는 경우들이 많아졌다.
고성능 파이썬은 Python 언어를 이용하면서 성능에 문제가 생겼을 때, 체크해볼 수 있는 언어의 기본적인 특성부터 시작해, 병렬 처리(벡터)를 이용하는 법, Cython이나 Numba, Pypy와 같은 효율적인 모듈 이용법, 비동기 I/O 처리 및 멀티코어 이용방법, 클러스터 사용법 과 같은 성능 문제에 부닥쳤을 때 고려해볼만 한 다양한 부분을 예제를 하나하나 변경해가면서 경우에 따라 어떤 이용법을 이용하면 좋은 지 소개하고 상세히 설명하고 있다. 또 RAM을 덜 사용하기 위한 팁 및 마지막 챕터에 소개하는 일을 할 때 겪었던 경험에 대한 교훈은 지금 당장 필요하지 않을 지 몰라도, 또 성능과 관련된 문제에 부닥치지 않더라도 알고 있으면 많은 도움이 되는 훌륭한 내용들이다,
성능 문제로 인해, L1, L2 cache miss를 어떻게 줄여야 할 지 고민해 본적이 있다면, 고성능 파이썬에서 설명하는 다양한 내용들이 처음보는 이야기는 아닐 것이라 생각된다. 다양한 책에서 소개하는 고성능 코딩 방법이라던지, cache miss를 줄일 수 있는 다양한 방법들을 이용해 보면 간단히 책에서 이야기하는 것처럼 성능이 올라가지 않는 경우가 많다. 또 CPU의 상세 파악, Cache/RAM을 어떻게 효율적으로 이용해야 하는 지 고민을 하면서 많은 시간을 들이지만 생각만큼 잘 되지 않는 경우가 많다. 이는 Script언어나 컴파일 언어 모두에 해당하는 이야기이다. 이러한 고민을 가지고 있는 분들이라면, 고성능 파이썬이 파이썬에 대해서 언급하고 있는 책이지만, 다른 언어에도 충분한 힌트를 줄 만한 내용들을 포함하고 있어서 읽어보시길 권하고 싶다.
책에 실려있는 잘못된 indentation 부분이라던지, 일부 어색한 번역투가 있기는 하지만, 이 책을 읽고 이해할 수 있는 분들에게는 별 문제가 되지 않을 것으로 생각된다.
이 책을 읽으면서, 기존에 알고 있던 파이썬에 대한 언어의 이해가 좀 더 깊어진 부분도 있고, 최적화 관련 내용도 상기해 볼 수 있는 좋은 기회였다. 본 책을 리뷰할 기회를 주신 한빛미디어에도 감사의 말을 전하고 싶다.