heoh***
2021-05-23

자료구조별 특성부터 멀티코어·클러스터의 활용과 다양한 실무 노하우 등 ‘더 빠르고 확장성 있는 파이썬 개발에 필요한 고급 기법’을 다룬 책
이 책은 파이썬의 성능 향상에 필요한 기법과 해결책을 다룬다. 성능상의 병목을 인지하여 더 빠르고 확장성이 뛰어난 해법을 구하는 실용적인 지침을 제공한다.
파이썬은 빠른 개발과 배포, 그리고 확장성 있는 시스템을 만드는 최적의 언어이다.
이 책의 대상독자는 파이썬을 충분히 사용해보았고, 특정 부분이 왜 느린지 생각해 본 적이 있으며, 이를 위한 해법으로 사이썬, 넘파이, PyPy 같은 기술들을 들어본 독자들이다 라고 한다. 그만큼 책의 내용이 상당히 어렵다.
이 책에서 다루는 내용은 다음과 같다.
· 컴퓨터의 저수준 동작 방식 : 내부적으로 어떤 일이 일어나는지 이해하기
· 리스트와 튜플 : 기본 자료구조인 리스트와 튜플의 미묘한 의미 차이와 속도 차이
· 사전과 셋 : 중요한 자료구조인 사전과 셋의 메모리 할당 전략과 접근 알고리즘
· 이터레이터 : 이터레이터를 통해 데이터를 스트리밍 하는 방법과 더 파이썬다운 코드를 작성하는 방법
· 순수 파이썬 방식의 접근 : 파이썬과 모듈을 효율적으로 사용하는 방법
· 행렬과 넘파이 : numpy 라이브러리를 고수처럼 사용하는 방법
· 컴파일과 JIT 컴퓨팅 : 기계어로 컴파일해 더 빠르게 처리하기, 프로파일링 결과에 따라 성능 개선 방향 정하기
· 동시성 : 데이터를 효과적으로 옮기는 방법
· 다중처리 : 병렬 컴퓨팅과 numpy 행렬을 효율적으로 공유하기 위해 기본 라이브러리인 mutiprocessing 모듈을 이용하는 다양한 방법, 프로세스 간 통신(IPC)의 비용과 장점
· 클러스터 컴퓨팅 : 연구나 프로덕션 시스템에서 다중 처리를 사용한 코드를 수정하여 로컬 또는 리모트 클러스터에서 실행하는 방법
· 메모리 아껴 쓰기 : 크고 비싼 컴퓨터를 구입하지 않고 대용량 문제를 해결하는 접근법
· 현업에서 얻은 교훈 : 현업에서 고군분투했던 문제에서 얻은 교훈을 통해 같은 문제를 겪지 않도록 예방하기
끝으로
이 책은 파이썬 3에 맞춰 내용을 보강한 개정판으로써, 처리할 데이터 용량이 큰 프로그램의 병목현상을 찾고 이를 해결해 성능을 향상시키는 다양한 방법을 알려준다. "현장에서 얻은 교훈"이라는 챕터는 대량의 데이터를 다루며 속도가 결정적인 상황에서 파이썬을 사용중인 여러 성공적인 기업의 사례들을 소개하면서 기술적인 선택뿐만이 아닌 그 과정에서 어렵게 얻은 지혜도 공유하여 여러가지 사례들을 통해 어떻게 성능을 개선하였고, 어떤 라이브러리들을 사용하였는지를 소개하였다
경험이 많은 파이썬 프로그래머라면 이 책을 통해 다양한 문제에 대한 구체적인 해결방법을 배울 수 있고, 머신러닝 분야에서 여러 기업이 겪은 이야기들도 엿볼수 있다.