|
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
최근에 회사에서 업무를 진행하면서 비동기 프로그래밍이란 것에 대해 알게 되었는데, 비동기 프로그래밍을 적용하면 I/O를 좀 더 효율적으로 처리할 수 있을 것이란 기대에 언젠가 해봐야지 생각하고 있던 찰나에 파이썬 비동기 라이브러리 Asyncio 를 읽게 되었다. 책 자체는 두께가 얇기 때문에 읽는 데에는 많은 시간이 걸리지 않았다. 또한 책 안에 다양한 예제를 제공해서 읽는 데에도 크게 어려움이 없었다.
책에서 다루는 내용들은 크게 다음과 같다. 1. Asyncio 소개 2. Asyncio와 다른 라이브러리 비교 3. 코루틴, 태스크 등 async / wait 기능 소개 4. Asyncio와 관련된 서드파티 라이브러리 소개 |
|
Using Asyncio in Python 파이썬 비동기 라이브러리 Asyncio
파이썬의 버전업을 살펴보면파이썬 3.4에 asyncio 라이브러리가 도입되었고, 파이썬 3.5에사는 더 쉽게 사용할 수 있도록 async와 await 키워드가 도입되었다. 세롭게 추가된 기능을 통해 소위 비동기 프로그래밍이 가능해졌다. 파이썬 커뮤니티는 이러한 새로운 기능인 Asyncio를 조심스럽게 받아들였다. 일부 개발자들은 복잡하고 어려운 것으로 생각했다. 파이썬 커뮤니티에서 유명한 일부 기여자도 파이썬의 Asyncio API의 복잡성에 대해 의구심을 표했다. 커뮤니티 내의 교육자들은 학생들에게 Asyncio를 과연 잘 가르칠 수 있을지 우려하기도 했다 저자 케일럽 해팅은 20년차 베테랑 파이썬 프로그래머로서 위의 걱정을 불식시키기에 충분한 파이썬 비동기 라이브러리 Asyncio를 직접 활용 예를 들어 이 책을 저술하였다
이 책에서는 새로운 기능들이 도입된 이유와 사용 방법에 대한 기본적인 부분을 설명한다. ? 병행 네트워크 프로그래밍에서 asyncio 라이브러리와 threding 라이브러리 비교 ? 새로 도입된 async / wait 문법 이해 ? 파이썬 기본 라이브러리로 새로 도입된 asyncio 라이브러리 개요 ? Asyncio와 호환되고 인기 많은 서드파티 라이브러리에 대한 사례 연구
역자 동동구는 20년차 프로그래머로서 경험에서 우러난 용어 선택으로 독자들이 이해도를 높였다.
이 책은 ThreadBot 식당 이야기로 시작된다. 흥미롭게 멀티스레드 프로그래밍의 어려움을 설명하고 있다. 컴퓨터 프로그래머로서 가장 고통스러운 부분 중 하나이다.
이 책을 읽어야 할 독자는 최종 사용자 개발자 응용프로그램을 개발할 때 asyncio를 사용하길 원하는 사람들이다.
프레임워크 개발자 혹은 설계자 최종 사용자 개발자들이 응용프로그램을 개발할 때 사용하는 프레임워크와 라이브러리를 만드는 사람들로, 해당 프레임워크와 라이브러리 내부에서 asyncio를 사용하길 원하는 사람들이다,
이 책을 통하여 어려운 부분을 하나하나 해결해 나갈 수 있는 방법을 터득하고 파이썬 비동기 라이브러리 Asyncio를 필요한 업무에 잘 적용할 수 있는 개발자로 성장하기를 기원한다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
|
|
주로 사용하는 언어가 파이썬이고, 파이썬에 대한 이해를 높이기 위해 읽었습니다.
파이썬이라고 해도 하는 일이 데이터 분석이라 opencv, pandas 같은 필요 라이브러리를 가져다 쓰는 것이 주된 일이고, 개발을 하더라도, 비동기가 필요한 개발이 아니여서, 솔직하게 이 책의 많은 부분을 이해하지 못했습니다.
사실 차후에도 제가 하는 일을 바꾸지 않는 이상에는 Asycino를 볼 일이 없을 것 같기도 합니다.
그래서, 이 책이 필요한 사람들의 입장에서 좋은 책인지는 평가하기 어렵습니다.
그럼에도 이 책의 장점을 말하자면, 예시가 좋다고 생각합니다.
실제 복잡한 현실이 아닌 로봇이 모든 업무를 맡는 로봇 레스토랑의 예시를 들고 있습니다.
그렇기 때문에 어디에서 비동기가 필요한지, 비동기가 안 쓰이면 어떻게 되는 지 쉽게 이해가 갑니다.
또한 코드 하나 하나의 의미를 최대한 상세하게 설명하는 것도 특징입니다.
일일히 숫자를 적어가면서 어떤 식으로 작동하고 있는 지에 대해 적어놓았습니다.
이 점에서 비동기를 쓰지 않아본 사람에게도 어찌어찌 노력하면 내용의 4~50%는 이해할 정도가 된 것 같습니다.
사실 다른 주제를 다루는 책들은 결과가 명확하기 때문에 그렇게 하는 것이고 이 책은 어려우니 어쩔 수 없는 것인가라는 생각도 듭니다만.....
역으로 생각해보면, 일런 예시나 개념 설명이 없었다면,
비동기를 굳이 사용할 필요가 없는 사람의 입장에서, 계속해서 읽기에 힘들은 내용이었다고 생각합니다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공 받아 작성된 서평입니다." |
|
[서론] 이것이 바로 비동기작업이 아닌 경우에 발생하는 블로킹 현상이다. 네트워크 I/O 위주 작업에 스레드 기반 병행 처리보다 비동기 기반 병행 처리를 적용해야 하는 두 가지 이유는 다음과 같다. 물론, Asyncio는 명목상으로 단일 스레드이기 때문에, 멀티 스레드에만 영향을 미치는 전역 인터프리터 락(GIL: global Interpreter Lock)의 영향을 받지 않지만, 여러 CPU 코어의 장점도 얻을 수 없다는 단점도 있지만 말이다. 편집도 깔끔하다. |
"Asyncio는 일곱 가지 기능만 알면 충분하다 (일반적 용도로 가정할 때)" - 유리 셀리바노프
※ 한빛미디어 2021 도서 서평단 "나는 리뷰어다"의 일원으로 도서를 제공받아 작성한 리뷰입니다. |
![]()
한빛미디어의 파이썬 비동기 라이브러리 Asyncio 도서를 읽었습니다. 파이썬 비동기 개념과 관련 라이브러리 동작이 어떠한 지 알아보기 위해서 읽게 되었습니다.
첫 번째 챕터로는 파이썬에서 Asyncio 라이브러리로 비동기 처리를 하면 해결할 수 있는 점과 여러 오해들을 깔끔하게 정리해줍니다. 비동기를 소개하기 전에 스레드를 사용하는 어플리케이션의 소개와 문제점을 간단한 ThreadsBot 식당 예제로 서두를 엽니다. 스레드의 단점을 해결할 수 있는 비동기 Asyncio 를 소개합니다. 비동기 Asyncio 로 해결할 수 있는 점과 해결할 수 없는 점을 소개하며 독자에게 정확한 개념을 심어줍니다.
두 번째 챕터는 스레드를 소개합니다. 이전 챕터에선 비유를 곁들인 예제로 스레드를 소개했다면 이론으로 장단점을 소개합니다. 특히 파이썬 스레드는 어떻게 동작하는지 간단한 예제 코드와 함께 설명을 이어갑니다. 코드 예제에 번호로 상세 설명이 달려 있어서 이해하기가 편했습니다. 예제로 스레드의 문제점을 눈으로 확인해보고 비동기 Asyncio 가 왜 필요한지 자연스레 논리 흐름을 이어갑니다.
![]()
세 번째 챕터는 Asyncio 를 소개합니다. Ayncio 를 처음부터 소개하기 보다는 비동기 프레임워크를 제작하는 입장에서 Asyncio 패키지를 어떻게 사용해야 하고 어떤 원리로 돌아가는지 알려줍니다. 파이썬 신규 버전에 추가된 코루틴과 async def, await 구문을 소개하며 기존 언어에서 어떻게 비동기 기능이 추가됐는지 알려줘서 유익했습니다.
![]()
네 번째 챕터는 각종 서드파티 비동기 라이브러리를 알아봅니다. 책 절반에 가까운 분량이기도 해서 메인 챕터이기도 합니다. 메시지 대기열, 소켓, PostgreSQL 데이터베이스 클라이언트 등의 라이브러리에서 비동기 기능을 어떻게 지원하는지 각 소챕터마다 예제 코드를 중심으로 진행합니다. CS 이론, 도커, API 서버, 클라우드 등의 종합적인 사전 지식이 필요해서 컴퓨터 과학에 입문한 분들에겐 매우 생소할 수 있어보입니다. 사용해보지 않은 라이브러리가 많아 따로 공식 문서를 참고하여 부족한 지식을 채우면서 읽었습니다. 따로 테스트하는 방법이 불친절한 감이 없지 않아, 비동기 처리를 중심으로 봤었네요.
Asyncio 의 A부터 Z까지 차근차근 소개하는 책은 아니어서 어느정도 비동기 지식이 있는 분들께 추천드리고 싶습니다.
한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다. |