파이썬 비동기 라이브러리 Asyncio - 대규모 병행성 작업을 위한 비동기 프로그래밍

한빛미디어에서 제공받는 책으로 해당 리뷰를 작성하였습니다.

책표지!

1

이 책은 파이썬의 비동기 라이브러리인 asyncio를 설명한 책이다. 5월 23일에 발매된 파이썬 교재 중에서 2021년 1월에 출간된 진지한 파이썬과 함께 가장 주목해야 될 책이다. 일반적으로 파이썬 교재가 기초 문법이나 머신러닝/딥러닝 관련 교재가 많이 출간된다. 이 책은 중급자 이상의 개발자가 꼭 알아야 될 동기/비동기 관련 기술을 아주 자세히 소개하고 있다.

asyncio에 대해서 간단히 소개하자면, asyncio는 Python 3.4에 포함되기 시작해서 파이썬 3.5 버전의 provisional API를 거쳐서, 3.6이 되면서 API에 대한 명세가 사실상 확정되었다. 대부분의 파이썬 개발자들이 CPU 연산의 경우 여러 쓰레드를 사용하는 것에 대해서 다양한 관점과 방법을 제안하지만, I/O 작업의 경우 GIL을 해제하여 쓰레드를 사용하는 것에 대해선 효율성이 높다는 것을 알고 있다. 파이썬 3.4에 generator가 추가되면서 하나의 쓰레드를 사용하면서 동시에 다양한 일을 할 수 있는 코루틴 기반의 asyncio에 대한 관심이 높아졌다.

2

책을 처음받고 asyncio를 튜토리얼 정도로 가볍게 소개하는 교재로 생각했다. 책이 176쪽으로 매우 얇기 때문이다. asyncio에 대해서 가볍게 소개하고, 몇가지 예제를 보여주고 끝날 것으로 생각하고 책을 읽기 시작했는데, (너무 즐겁게도) 내용이 깊었다. 심지어 2페이지를 기준으로 30~40% 정도는 코드를 담고 있어서 교재 분량에 비해서 시간이 제법 오래 걸린다.

내용은 좀 과도하게 충실하다. 책의 분량을 생각하면 말이 안되는 것 같지만, 책을 읽어보면 대부분의 필요한 내용은 각주로 설명하고 있다. 각주에 있는 내용을 잘 참고하면 웬만한 500~600쪽 교재 분량을 능가한다. 다시 말해서 선택과 집중을 매우 잘 한 책이다.

그리고 이 책을 읽는데 팁을 드리자면, 해당 교재를 읽으면서 각주를 신경쓸 여력이 없다면 ThreadingBot 예제를 중심으로 책을 가볍게 먼저 읽어보길 권한다. 해당 예제는 비동기/동기 문제를 손쉽게 재현할 수 있게 구성되어 있기 때문에 시간이 없다면 일단은 예제를 중심으로 진행해보자.

책표지!

3

컴퓨터 공학을 전공한 학생분들의 경우 OS 시간에 ‘생산자/소비자’나 ‘식사하는 철학자’ 문자등을 통해서 동기/비동기 문제를 접했을 것이다. 현재 파이썬으로 학습을 진행하는 분들은 동기/비동기 문제를 직접적으로 겪어보지 않을 수도 있지만, 데이터분석/머신러닝을 하는 과정에서 동기/비동기 문제를 한번은 만나게 된다.

자바로 웹 서비스를 개발하다 보면, 알게 모르게 쓰레드 문제로 고생을 하는데 많은 개발자들이 조슈아 블로크의 자바 병렬 프로그래밍 등의 교재를 통해서 해당 문제를 이해하고 해결해나간다. 파이썬도 동기/비동기 문제를 만나게 되면 이 교재를 통해서 기술을 익히고 해결할 수 있을 것으로 기대한다.

좋은 책을 리뷰할 수 있어서 좋은 시간이었다. 앞으로도 중급자 개발자에게 유익한 이런 책이 많이 출판되길 기원한다.

Written on May 23, 2021