Categories
컴퓨터

[한빛미디어] (리뷰) 파이썬 Asyncio 설명서

출처: 라이언양 (아이폰8)

“한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.”

이 책은 파이썬(Python)의 비동기 프로그래밍 라이브러리인 Asyncio를 소개한다. 파이썬 공식 문서를 통해 Asyncio 라이브러리에 대한 설명을 확인할 수 있지만, 이 책을 활용하면 더 빠르고 쉽게 내용을 이해할 수 있다.

비동기 입출력 라이브러리인 Asyncio는 파이썬 3.4에 처음 소개되었고, 파이썬 3.5에서는 async와 await 키워드가 추가되었다. 이러한 기능 추가를 통해 파이썬에서도 비동기 프로그래밍을 깔끔하게 구현할 수 있게 되었다.

컴퓨팅 자원을 효율적으로 사용하는 방법에는 여러 가지가 있는데, 그 중 프로그래밍 모델 관점에서 보면 멀티스레딩(multithreading)비동기(asynchronous) 프로그래밍이 있다. 통상 CPU 파워가 많이 필요한 CPU bound 작업에는 멀티스레딩이 효율적이지만, 네트워크(디스크) 읽기 및 쓰기 등 I/O 작업이 많이 필요한 I/O bound 작업에는 비동기 프로그래밍이 더 효율적이다.

프로그래밍 모델 관점에서 보면, 스레딩의 여러 CPU와 공유 메모리(스레드 간 효율적 통신의 수단)를 사용하는 방식이 계산 위주 작업을 가장 잘 수행할 수 있어 계산 위주 작업이 많은 분야 에 가장 적합하다. 하지만 다른 문제들을 발생시킬 수도 있어 필요악이다. 네트워크 프로그래밍은 스레딩을 필요로 하는 영역은 아니다. 네트워크 프로그래밍의 중요한 특징은 ‘어떤 일들이 일어나기를 기다림’이라는 많은 작업들로 구성되어 있다는 점이다. 따라서 여러 CPU에 작업들을 효율적으로 분배하기 위한 운영체제와의 연계 작업이 필요 없다. 또한 공유 메모리 접근 시 발생할 수 있는 경합 조건과 같은 리스크를 불러오는 선점형 멀티태스킹도 필요 없다.

<파이썬 비동기 라이브러리 Asyncio>, 한빛미디어, 19쪽

한빛미디어에서 번역하여 출간한 <파이썬 비동기 라이브러리 Asyncio>의 구성은 아래와 같다.

  1. Asyncio 소개
  2. 멀티스레딩(multithreading)의 장점과 단점
  3. Asyncio 깊이 이해하기
  4. Asyncio를 활용하는 라이브러리 소개

마치 벽돌을 쌓는 것처럼 간단한 예제에서 더 복잡한 예제를 소개하기 때문에 파이썬에 대해 어느정도 지식이 있다면 쉽게 이해할 수 있다. 특별히 4장 <여러분이 사용하지 않는 Asyncio 라이브러리 20개>에서 다양하고 유익한 예제를 소개하기 때문에 실무에 많은 도움이 되었다. 책에서 소개하는 라이브러리 및 기술은 아래와 같다.

  • The Janus
  • aiohttp
  • Splash API
  • Docker
  • Beautiful Soup 4
  • ZeroMQ
  • Smoothie Charts
  • asyncpg
  • Sanic 등
출처: 라이언양 (아이폰8)

비동기 프로그래밍을 처음 접하면 통상 프로그램이 순차적으로 실행되지 않다 보니 이해가 어려울 수 있다. 이는 기존의 관점이 아닌 새로운 패러다임(paradigm)으로 문제를 봐야 하기 때문이다. 한빛미디어의 <파이썬 비동기 라이브러리 Asyncio>를 통해 이러한 패러다임을 익히는 것을 추천한다.

<참고> 아래 웹사이트 및 블로그 포스트가 유익했다.

Hits: 689

By 라이언양

라이언양 연구실 주인

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다