티스토리 뷰

Hobby/Book

[Book] 진지한 파이썬

생각많은 소심남 2021. 2. 22. 00:11

(해당 포스트에서 소개하고 있는 "진지한 파이썬" 책은 한빛미디어로부터 제공받았음을 알려드립니다.)

 

진지한 파이썬

파이썬 고수가 되고 싶은 개발자를 위한 실전 프로그래밍 지침서. 파이썬의 기능과 능력을 제대로 활용해 프로그램을 체계적으로 구축하는 방법을 소개한다. 문서화, 버전 관리, 시간대 설정 방

www.hanbit.co.kr

 혹시 파이썬으로 개발 업무를 하다가 막 한계가 느껴진 경우가 있을지 궁금하다. 사실 나도 회사에서는 파이썬으로 작업을 많이 하지만, 일반적인 업무를 하는데 있어서는 그냥 여타 파이썬 입문책에 나와있는 문법이나 기법으로 해결되는 경우가 많다. 그런데 문제는 성능을 개선하려고, 다른 오픈소스 코드를 분석하다 보면, 앞에서 많이 봤던 그런 입문책에서는 소개되지 않는 문법이나 패키지들이 사용된다는 점이다. 특히 나같은 경우는 멀티프로세싱과 멀티스레딩 관련 부분이 많이 막혔고, 이를 온라인에 나와있는 예제나 개발문서만 보고 구현하는 게 너무 어려웠다. 어쩌면 문법만 소개하기에는 이제 파이썬은 많은 시간동안 발전이 이뤄졌고, 수많은 개발자들에 의해서 구현에 필요한 다양한 패키지들이 나왔기에 어쩌면 일반 입문책으로 파이썬의 모든 것을 다루기엔 어려워진 것 같다. 나도 단순히 입문책에서 소개하는 문법보다는 궁극적인 성능이나 개발 효율성을 올릴 수 있는 그런 방법을 배우길 원했고, 그런 입장에서 이 책을 접했다.

그림 1. 진지한 파이썬

 서두에 언급했던 것처럼 이 책은 입문책이 아니다. 책을 열자마자 나오는 주제는 여타 기초 문법이 아닌, 파이썬으로 패키지 라이브러리를 만들때의 버전 관리와 코딩스타일과 관련된 내용이다. 그래서 혹여나 파이썬을 처음 다루는 사람이라면 이 책보다는 다른 쉬운 책을 권하지만, 뭔가 파이썬으로 작업을 많이 하고, 전반적인 성능 개선 / 패키징 / 테스트에 관심이 많은 사람이라면 오호? 하는 생각이 들지 모른다. 그만큼 책에서 다루는 내용이 심오하고, 실무에 써먹을 수 있을만한 내용들이 많다. 간단하게 책에서 다뤄지고 있는 주제는 다음과 같다.

- 모듈, 라이브러리, 프레임워크 개발/관리
- sphinx를 활용한 문서화 및 API 관리
- datetime을 이용한 시간 정보 처리
- pytest / tox를 이용한 단위테스트와 의존성 검사
- 함수형 프로그래밍
- decorator
- Hy같은 Abstract Syntax Tree (AST) 이해
- 최적화
- 멀티스레딩/멀티프로세싱, asyncio
- RDB

그리고 특이하게 각 장별로 해당 주제에 대한 전문가와의 인터뷰가 담겨져 있다. 사실 책에서 다뤄지는 주제들이 약간 전문성이 있다보니, 단순히 내용과 예시만 소개되는 것보다도 해당 패키지를 사용하는 전문가가 겪는 어려움이나 팁에 대한 소개가 나와있어, 딱 내용이 와닿았다.

 개인적으로 관심있게 읽은 부분은 최적화부분이었다. 사실 회사에서 많이 하던 일도 하드웨어와 실시간 통신을 하면서 얻은 데이터를 어떻게 처리하는지 여부가 성능에 영향을 많이 미쳤다. 이런 부분에서도 파이썬에서 제공하는 자료형이나 로직을 잘 설계하고, 이 때의 성능을 잘 모니터링할 수 있어도 작업의 효율이나 성능을 올릴 수 있다는 점을 책을 읽고나서 알았다. (한편으로는 그동안 너무 무식하게 코딩했구나 하는 후회도 한편 듦...)

그림 2. 실전 스케일링 파이썬 프로그래밍과 진지한 파이썬

책의 서두를 읽다보니 알았는데, 사실 이 책은 The hacker's Guide to Scaling Python Programming (실전 스케일링 파이썬 프로그래밍)의 4판으로 나온 책이었다. 앞에서 이야기했던 것처럼, 한창 멀티스레딩 관련 자료를 찾다가 중고서점에서 우연히 딱 집은 책이 이 책이었는데, 2년이 지난 지금 같은 저자가 쓴 책을 읽었던 것이다. 4판인 진지한 파이썬으로 넘어오면서 언급했던 주제인 스케일링 관련 내용은 많이 줄었지만, 조금 더 다양한 주제와 예제로 폭넓게 다뤄졌다. 다만 주제가 넓어지는데 비해 책에서 다뤄진 내용이 딱 기본이 전제된 것을 가정하고 언급된 내용이 많아 처음 접할 때는 조금 어려운 점이 느껴질 수 있을 수 있다.(그리고 개인적으로는 이 주제들이 300여페이지로 설명되기에는 너무 함축되지 않았나 하는 생각이 좀 든다.) 그래도 읽으면서 직접 예제를 다뤄보면, 여타 유명한 패키지내에서 구현되어있던 전혀 생소한 문법과 기법들이 조금씩 이해되는 경험을 하지 않을까 생각한다. 

참고:
혹시나 원서 정보가 궁금하면 원저자가 만든 책 사이트가 있다. 예제를 찾는 사람이라면 이 사이트에서 standard를 구입해보는 것도 권해본다.

 

Serious Python — A book on advanced Python development

Who's the Author? Hi, I'm Julien, a Free Software hacker for close to twenty years now. For more than 12 years, I've been developing software using Python. I spent those last years as a Project Team Leader in OpenStack, a distributed cloud platform. It's t

serious-python.com

 

댓글