메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

파이썬 비동기 라이브러리 Asyncio

대규모 병행성 작업을 위한 비동기 프로그래밍

한빛미디어

번역서

판매중

  • 저자 : 케일럽 해팅
  • 번역 : 동동구
  • 출간 : 2021-05-01
  • 페이지 : 176 쪽
  • ISBN : 9791162244197
  • 물류코드 :10419
  • 초급 초중급 중급 중고급 고급
4.5점 (12명)
좋아요 : 12

비동기 프로그래밍의 지름길 Asyncio

 

비동기 프로그래밍을 위한 파이썬 라이브러리 Asyncio를 다루는 실용서다. 대규모 동시성 작업과 높은 안전을 보장하는 Asyncio를 다양한 사례로 소개한다. 예제를 통해 파이썬의 기존 방식과 새로운 비동기 방식의 차이점을 실용적인 관점에서 설명하고 async/await 언어의 새로 도입된 문법과 Asyncio와 호환되는 인기 있는 라이브러리를 소개한다. 

 

 

주요 내용 

  • 파이썬의 새로운 라이브러리 Asyncio 소개 
  • 병행 네트워크 프로그래밍에서 Asyncio 라이브러리와 스레드 라이브러리 비교 
  • 최종 개발자를 위한 Asyncio 기능과 프레임워크 개발자를 위한 Asyncio 기능의 차이점 비교 
  • 코루틴, 태스크 및 API를 포함한 async/await 언어의 새로 도입된 문법 소개 
  • Asyncio와 호환되는 서드파티 라이브러리 사례 소개 
케일럽 해팅 저자

케일럽 해팅

20년 차 베테랑 파이썬 프로그래머. 화학공학 석사 학위가 있고, 전공 분야에서 모델링부터 데이터 분석까지 다양한 파이썬 프로그램을 작성했다. 파이썬 외에도 고객 관계 관리(CRM)를 비롯해서 의료 재무관리 프로그램 개발이나 GPS 추적 등 다양한 분야의 프로젝트에 참여한 바 있다.

 

동동구 역자

동동구

현재 전략 기획 업무를 수행하고 있다. 이전에는 B2C 및 B2B 웹 애플리케이션, Brew/WIPI/SKVM 등의 피처폰 애플리케이션, iOS/안드로이드/윈도우폰/타이젠 애플리케이션 등의 설계 및 개발, 엔지니어 관리 업무를 수행했다. 그 외 다양한 IT 서적에 대한 번역 활동을 하고 있다.

 

CHAPTER 1 Asyncio 소개

1.1 ThreadsBot 식당 이야기

1.2 에필로그

1.3 Asyncio로 해결할 수 있는 것은?

 

CHAPTER 2 스레드에 관한 진실

2.1 스레딩의 장점

2.2 스레딩의 단점

2.3 사례 연구: 로봇과 식기

 

CHAPTER 3 Asyncio 공략

3.1 퀵스타트

3.2 Asyncio의 탑

3.3 코루틴

3.4 이벤트 루프

3.5 Task와 Future

3.6 비동기 콘텍스트 관리자들: async with

3.7 비동기 이터레이터 async for

3.8 비동기 제너레이터를 사용한 더 간단한 코드

3.9 비동기 컴프리헨션

3.10 시작과 종료(부드럽게!)

 

CHAPTER 4 여러분이 사용하지 않는 Asyncio 라이브러리 20개

4.1 표준 라이브러리

4.2 트위스티드

4.3 The Janus 대기열

4.4 aiohttp

4.5 ØMQ(ZeroMQ)

4.6 asyncpg와 Sanic

4.7 그 외 라이브러리와 자료

 

CHAPTER 5 마치며

 

APPENDIX A 파이썬의 비동기 지원에 대한 역사

A.1 태초에 asyncore가 있었다

A.2 네이티브 코루틴으로 가는 길

 

APPENDIX B 보충 자료

B.1 Asyncio를 사용하는 식기 예제

B.2 새로운 웹사이트 스크레이퍼에 대한 보충 자료

B.3 ZeroMQ 사례 연구를 위한 보충 자료

B.4 asyncpg 사례 연구를 위한 데이터베이스 트리거 처리

B.5 Sanic 예제를 위한 보충 자료: aelapsed와 aprofiler

Asyncio, 파이썬 비동기 프로그래밍의 이해

 

파이썬  Asyncio 라이브러리는 많은 개발자가 어려워하는 비동기 프로그래밍의 복잡성을 개선하기 위해 탄생했다. 20년 차 베테랑 파이썬 프로그래머인 저자는 다양한 분야에서 파이썬을 활용한 경험을 살려 파이썬 관련 도서 여러 권을 집필했다. 

 

로봇을 활용하여 식당을 운영하는 가게의 이야기를 본문 앞에 배치해 비동기 프로그래밍의 필요성을 흥미롭게 설명한다. 또한, 파이썬에서 기존에 사용하던 스레드 라이브러리와 새로운 Asyncio 라이브러리를 다양한 예제와 함께 비교 설명한다. async/await 언어의 새로운 문법과 Asyncio와 호환되는 서드파티 라이브러리도 소개하며 실전에서 활용할 수 있도록 돕는다. 

 

책의 내용을 따라 차근차근 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>를 통해 이러한 패러다임을 익히는 것을 추천한다.

 

한빛미디어의 파이썬 비동기 라이브러리 Asyncio 도서를 읽었습니다.

파이썬 비동기 개념과 관련 라이브러리 동작이 어떠한 지 알아보기 위해서 읽게 되었습니다.

 

 

 

첫 번째 챕터로는 파이썬에서 Asyncio 라이브러리로 비동기 처리를 하면 해결할 수 있는 점과 여러 오해들을 깔끔하게 정리해줍니다.

비동기를 소개하기 전에 스레드를 사용하는 어플리케이션의 소개와 문제점을 간단한 ThreadsBot 식당 예제로 서두를 엽니다.

스레드의 단점을 해결할 수 있는 비동기 Asyncio 를 소개합니다.

비동기 Asyncio 로 해결할 수 있는 점과 해결할 수 없는 점을 소개하며 독자에게 정확한 개념을 심어줍니다.

 

 

 

두 번째 챕터는 스레드를 소개합니다. 이전 챕터에선 비유를 곁들인 예제로 스레드를 소개했다면 이론으로 장단점을 소개합니다.

특히 파이썬 스레드는 어떻게 동작하는지 간단한 예제 코드와 함께 설명을 이어갑니다.

코드 예제에 번호로 상세 설명이 달려 있어서 이해하기가 편했습니다.

예제로 스레드의 문제점을 눈으로 확인해보고 비동기 Asyncio 가 왜 필요한지 자연스레 논리 흐름을 이어갑니다.

 

 

 

세 번째 챕터는 Asyncio 를 소개합니다.

Ayncio 를 처음부터 소개하기 보다는 비동기 프레임워크를 제작하는 입장에서 Asyncio 패키지를 어떻게 사용해야 하고 어떤 원리로 돌아가는지 알려줍니다.

파이썬 신규 버전에 추가된 코루틴과 async def, await 구문을 소개하며 기존 언어에서 어떻게 비동기 기능이 추가됐는지 알려줘서 유익했습니다.

 

 

 

네 번째 챕터는 각종 서드파티 비동기 라이브러리를 알아봅니다.

책 절반에 가까운 분량이기도 해서 메인 챕터이기도 합니다.

메시지 대기열, 소켓, PostgreSQL 데이터베이스 클라이언트 등의 라이브러리에서 비동기 기능을 어떻게 지원하는지 각 소챕터마다 예제 코드를 중심으로 진행합니다.

CS 이론, 도커, API 서버, 클라우드 등의 종합적인 사전 지식이 필요해서 컴퓨터 과학에 입문한 분들에겐 매우 생소할 수 있어보입니다.

사용해보지 않은 라이브러리가 많아 따로 공식 문서를 참고하여 부족한 지식을 채우면서 읽었습니다.

따로 테스트하는 방법이 불친절한 감이 없지 않아, 비동기 처리를 중심으로 봤었네요.

 

Asyncio 의 A부터 Z까지 차근차근 소개하는 책은 아니어서 어느정도 비동기 지식이 있는 분들께 추천드리고 싶습니다.

 


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

 

[서론]

 

이 책의 부제는 "대규모 병행성 작업을 위한 비동기 프로그래밍"이다. 

 

사실 멀티스레드 프로그래밍은 프로그래밍을 통틀어 가장 고통스러운 부분 중 하나이다. 

 

이를 해결하기 위해 다양한 방법론이 있어왔다. 

 

파이썬도 3.4부터 asyncio 라이브러리가 도입되고, 3.5부터는 asunc, await 키워드가 도입되었다. 

 

 

[Asyncio와 비동기 프로그래밍이란?]

 

사실 코딩에 꽤나 익숙하지 않다면 멀티스레드/비동기작업이 필요한 때를 쉽게 떠올릴 수가 없다.

 

대표적으로 병렬 작업 또는 비동기 작업이 필요할 때는, 예를 들어 다수의 웹페이지를 한 번에 긁어올 때이다. 

 

멀티스레드 또는 비동기 작업을 이용해서 한 번에 하나씩이 아니라, 동시에 다수의 http 요청을 병행하여 실행할 수 있다. 

 

일반적으로 CPU는 하나의 작업을 처리한 후 네트워크 I/O의 완료를 기다린다. 

 

그래서 보통은 requests.get() 등을 사용하여 큰 규모의 웹 페이지를 긁어온다면 순간적으로 프로그램이 멈칫하는 현상이 발생할 것이다. 

 

이것이 바로 비동기작업이 아닌 경우에 발생하는 블로킹 현상이다. 

 

파이썬의 asyncio 라이브러리는 멀티 스레드가 아니면서도 더 나은 방식으로 동시에 여러가지 일을 수행하고, 완료되면 응답을 받는 비동기 처리를 지원한다. 

 

네트워크 I/O 위주 작업에 스레드 기반 병행 처리보다 비동기 기반 병행 처리를 적용해야 하는 두 가지 이유는 다음과 같다. 

 

이유 1. 스레드를 사용하는 선점형 멀티태스킹보다 안전하다 : 오류, 경합 조건, 비결정론적 위험 요소가 발생하지 않는다.

 

이유 2. 동시에 수천 개의 소켓 연결을 간단히 처리할 수 있다 : 웹 소켓이나 사물인터넷을 위한 MQTT같은 수명이 긴 연결도 처리할 수 있다. 

 

결국 Asyncio는 실행 제어가 코루틴 간에 전이 되는 부분을 쉽게 확인할 수 있기 때문에, 관련된 자원들이 어떻게 사용되고 있는 지 훨씬 쉽게 확인할 수 있다는 점이 매력적이었다. 

 

물론, Asyncio는 명목상으로 단일 스레드이기 때문에, 멀티 스레드에만 영향을 미치는 전역 인터프리터 락(GIL: global Interpreter Lock)의 영향을 받지 않지만, 여러 CPU 코어의 장점도 얻을 수 없다는 단점도 있지만 말이다.

 

 

[결론]

 

사실 asyncio 라이브러리는 워낙 난이도가 높아서, 처음 도입될 때부터 파이썬 커뮤니티 내에서도 논쟁이 있었던 기능이다. 

 

개인적으로도 비동기 프로그래밍에 그다지 익숙하지가 않아서, 처음에는 asyncio가 간단한 예약어와 몇가지 클래스의 추가인 줄 알았다. 

 

그런데 공부하다보니 제대로 된 비동기 지원을 위해서는 프로그램 설계와 구조의 변화가 반드시 따르게 된다는 것을 깨달았다. 

 

결국 asyncio는 여러 개의 작업을 동시에 수행하는 것이고, 하나의 작업이 완료되기까지 대기하는 동안 다른 작업을 수행할 수 있도록 하는 것이기 때문이다. 

 

이 책은 파이썬으로 멀티 스레드 프로그래밍을 해본 적 없는 사람은 조금 어려울 것이다. 

 

특히 비동기에 대해서 제대로 생각해보거나 충분히 활용해보지 않은 사람이라면 혼동이 많이 올 것이다. 

 

그래도 이 책은 얇고 가벼워서 공부하고 싶은 생각이 절로 나게 되어있다. 

 

편집도 깔끔하다.

 

쉬운 내용은 아니었지만, 이 책을 통해 스크립트 언어로서의 한계를 넘어 도전하고 있는 파이썬의 발전을 볼 수 있어서 좋았다. 

 

 

 

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

 

 

 

프로그래머로 본격적으로 일을 하기 위해서는 꼭 알아둬야 할 지식 중에 하나가 스레드 활용법이다. 센서를 실시간으로 모니터링한다든가, 전자기기의 각종 버튼 반응 처리,  연산 병렬 처리, 게임 등 곳곳에서 쓰이는 기능이며, 비동기 처리에 있어, 스레드는 필수 사항이기도 하다. 인터프리터 언어인 파이썬에도 스레드 기능이 당연히 들어 있다. 

 

 

 

그런데 이렇게 곳곳에서 쓰이는 요긴한 스레드에도 여러 문제를 가지고 있다. 대부분의 프로그래밍 언어에서 스레드 수를 가급적 많이 쓰지 말라고 권고하고 있다. 컴퓨터의 CPU 또는 메모리 자원을 많이 사용하는 비효율적 문제도 있고, 문법 자체는 어렵지 않으나, 프로그램 구조가 복잡해져, 타인이 수정하기 어렵고, 꼼꼼히 처리하지 않으면, 생각지도 않은 돌발 상황이 발생해, 개발자들을 골치 아프게 만드는 문제도 있다.

 

파이썬은 이런 문제를 해결하기 위해, asyncore 같은 새로운 비동기 기능을 만들어 발전해 왔으며, 파이썬 3.4에 스레드나 멀티프로세싱 보다 가벼운 병행 프로그래밍 도구 Asyncio가 등장했다. 이 책 '파이썬 비동기 라이브러리 Asyncio'는 바로 라이브러리 모듈 Asyncio를 정확히 이해하여 좀 더 쉽게 쓸 수 있는 방법을 알려주는 파이썬 프로그램 개발 실용서인 것이다. 집중적으로 Asyncio 라이브러리에 관한 필요한 것들만 다루고 있어서 책 부피마저도 군더더기 없이 두껍지 않다.

 

저자가 말하길 '파이썬 비동기 라이브러리 Asyncio'은 최종 사용자 개발자 즉 응용프로그램 개발자와 프레임워크 개발자 혹은 설계자를 대상으로 하고 있다고 말한다. 중급 이상 수준의 책으로 적어도 파이썬 기본, 특히 스레드, 코루틴 정도는 마스터한 사람을 위한 수준의 책으로 서버와 소켓 통신 같은 것도 알고 있다면, 좀 더 이해가 쉬울 것이다.  그렇다고 아주 난해한 정도까지는 아니다. 

 

 

 

Hello! Good bye!처럼 아주 간단한 코딩부터 단계적으로 수준을 높여가며, asyncio에 관해 학습하고, 예제 코드마다 자세한 설명도 잘 되어 있어, 비록 딱딱한 주제와 용어 때문에 살짝 지루함은 다소 느끼지만, 전반적인 내용을 이해하는데 많이 어렵지 않았다. 

 

책 구성은 제일 먼저 Asyncio를 간단히 소개하고, 스레드의 문제점과 차이를 알아 본 뒤, asyncio에 관해 구체적으로 살펴보면서, 관련된 다른 라이브러리에 대해서도 알아본다.

 

간혹 라이브러리 관련 책을 보면, 레퍼런스 매뉴얼 또는 공식 문서를 살짝 편집만 해서 내용 대부분 그대로 옮긴 것을 접하기도 하는데, '파이썬 비동기 라이브러리 Asyncio'는 완전히 격이 다르다. '한 땀, 한 땀 장인의 손길' 어쩌고 하는 그런 느낌이 드는 핸드메이드스러운 책이다.

 

 

 

케일럽 해팅 저자가 Asyncio를 완전 해부 분석하며, 하나하나 직접 테스트 코딩한 내용을 담고 있다. 옛날 방식의 코딩과 현대식 코딩의 차이, 추천과 비추천 함수, 주의할 점, 논란 부분, 어떤 때 써야 하는지 등등 무척 깊은 부분까지 잘 담고 있다.

 

경험 많은 개발자라면, 이것들이 얼마나 직접적으로 도움 되는지, 잘 알 것이다. 일일이 이 방법이 맞나, 저 방법이 맞나 테스트해보는 시간도 절약해주고, 잘못 적용해서 코드를 다시 뒤엎는 일도 막아 줄 수 있기 때문이다. 항상 일정에 쫓겨서 제대로 테스트할 여유 없는 대부분의 개발자 입장에서는 참 고마운 부분인 것이다.

 

그리고 asyncio뿐만 아니라, 스레드, 서버, 기타 라이브러리, API 등 본문과 관련된 다양한 것들의 참고 동영상, 관련 문서, 사이트도 책 곳곳에 본문과 주석 형태로 잘 정리해 놓아서 필요에 따라서는 독자가 더욱 깊게 파고들며 공부할 수 있는 여지도 남겨 두고 있다. 비록 책 두께는 얇지만, 담고 있는 내용은 그 몇 배를 넘는다.

 

 

 

책 4장의 '여러분이 사용하지 않는 Asyncio 라이브러리 20개'라는 주제도 같은 맥락이라 할 수 있다. 어떤 건지 잘 몰라서 안 썼거나, 아예 몰라서 못 써온, Asyncio, 비동기 기능에 적합한 라이브러리들을 소개하고 나름 중요 엑기스만 담은 코드도 함께 넣었다. 여기서는 메시지 대기열 서비스에는 ActiveMQ와 함께, HTTP, XMPP, FTP 등 인터넷 프로토콜에 다양한 기능을 제공하는 트위스티드, 스레드와 코루틴 간 통신 솔루션 Janus, 스마트 소켓도 제공하는 네트워킹 라이브러리 0MQ 등을 핵심 기능 위주로 가볍게 다루고 있다.

 

내 경우, 파이썬이 프로그램 개발 주력 언어가 아니라, 간단한 테스트 프로그램 정도로만 쓰다 보니, 파이썬의 깊은 곳을 잘 몰랐는데, '파이썬 비동기 라이브러리 Asyncio'를 통해 스레드, 멀티프로세싱, 병렬처리 등에 대해 지식을 다시 점검할 수 있었고, 미처 모르고 넘어갔던 부분을 제대로 파볼 수 있었다. 비동기 프로그래밍 관련해서 이만한 책은 없을 듯하다.

 

'파이썬 비동기 라이브러리 Asyncio'가 실제 개발에 유용한 주제를 담고 있고, 내용에도 깊이가 있는 만큼, 프로그램 실력을 확실히 한 단계 업그레이드하고 개발자의 시야를 넓혀 주는데 큰 도움을 줄 것이다. 비동기 쪽에서 더욱 효율적이고, 오류 적은 프로그램을 짜기 위해 이 책을 자주 참고할 생각이다.


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

주로 사용하는 언어가 파이썬이고, 파이썬에 대한 이해를 높이기 위해 읽었습니다.

 

파이썬이라고 해도 하는 일이 데이터 분석이라 opencv, pandas 같은 필요 라이브러리를 가져다 쓰는 것이 주된 일이고,

개발을 하더라도, 비동기가 필요한 개발이 아니여서, 솔직하게 이 책의 많은 부분을 이해하지 못했습니다.

 

사실 차후에도 제가 하는 일을 바꾸지 않는 이상에는 Asycino를 볼 일이 없을 것 같기도 합니다.

 

그래서, 이 책이 필요한 사람들의 입장에서 좋은 책인지는 평가하기 어렵습니다.

 

 

설명11.jpg

 

 

그럼에도 이 책의 장점을 말하자면, 예시가 좋다고 생각합니다.

 

실제 복잡한 현실이 아닌 로봇이 모든 업무를 맡는 로봇 레스토랑의 예시를 들고 있습니다.

 

그렇기 때문에 어디에서 비동기가 필요한지, 비동기가 안 쓰이면 어떻게 되는 지 쉽게 이해가 갑니다.

 

 

 

 

코드설명11.jpg

 

또한 코드 하나 하나의 의미를 최대한 상세하게 설명하는 것도 특징입니다.

 

일일히 숫자를 적어가면서 어떤 식으로 작동하고 있는 지에 대해 적어놓았습니다.

 

 

이 점에서 비동기를 쓰지 않아본 사람에게도 어찌어찌 노력하면 내용의 4~50%는 이해할 정도가 된 것 같습니다.

 

 

사실 다른 주제를 다루는 책들은 결과가 명확하기 때문에 그렇게 하는 것이고 이 책은 어려우니 어쩔 수 없는 것인가라는 생각도 듭니다만.....

 

역으로 생각해보면, 일런 예시나 개념 설명이 없었다면,

 

비동기를 굳이 사용할 필요가 없는 사람의 입장에서, 계속해서 읽기에 힘들은 내용이었다고 생각합니다.

 

 

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

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

책표지!

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

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

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

 

 

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

 

 

 


예전에 한 과제를 할 일이 있었다.
이 과제에서 점수가 책정되는 방식 중에서 전체 처리시간도 들어가있었는데, 파일 I/O (Input, Output)에서 병목이 발생해서 multiprocessing 라이브러리를 이용하여 해결해보려 했던 적이 있었다. 인터넷에 있던 여러 예제 코드들과 도큐먼트들을 참고해서 코드를 만들었는데.. 이전과 달라진 점들이 하나도 없었다. 그래서 직접 확인해보니, 분명히 동시에 처리는 하고 있었는데, 이상하게 속도가 1/n으로 줄어들어있었다. 결국 디버깅하지 못하고 그대로 과제를 제출했던 기억이 있다.

 

최근에 회사에서 업무를 진행하면서 비동기 프로그래밍이란 것에 대해 알게 되었는데, 비동기 프로그래밍을 적용하면 I/O를 좀 더 효율적으로 처리할 수 있을 것이란 기대에 언젠가 해봐야지 생각하고 있던 찰나에 파이썬 비동기 라이브러리 Asyncio 를 읽게 되었다. 책 자체는 두께가 얇기 때문에 읽는 데에는 많은 시간이 걸리지 않았다. 또한 책 안에 다양한 예제를 제공해서 읽는 데에도 크게 어려움이 없었다. 

책에서 다루는 내용들은 크게 다음과 같다.

1. Asyncio 소개2. Asyncio와 다른 라이브러리 비교3. 코루틴, 태스크 등 async / wait 기능 소개4. Asyncio와 관련된 서드파티 라이브러리 소개


책 내용 자체는 Asyncio에 대해 알고 익히기에 부족함이 없었지만, 라이브러리 사용법이 어렵다기보단.. 개념자체를 완벽하게 이해하고 적용하기 어려운 부분이어서.. 다양한 상황에서 많이 사용해봐야 숙달될 것 같다.

I/O를 다루면서 스트레스 받았던 적이 많은 분들에게 추천드리고 싶다.
그리고 번역을 읽음에도 불편함이 없었다. 이것은 내용과는 별개의 강점 같다.

파이썬 3.4에 asyncio 라이브러리가 도입되었고, 파이썬 3.5에서는 더 쉽게 사용할 수 있도록

async와 await 키워드가 도입되었다고 한다.

이제 이렇게 추가된 기능들을 통해 비동기 프로그래밍이 가능해졌는데, 파이썬 초보자가 이를 스스로 익히기는

복잡한 부분이 많다. 그런 점들을 해결해주기 위해 출판된 책, Using Asyncio in Python!

 

 

https://book.naver.com/bookdb/book_detail.nhn?bid=18992958

 

파이썬 비동기 라이브러리 Asyncio

출처 입력

1. 단일 프로그램에서 동시에 여러 개의 HTTP 요청을 병행하여 실행할 수 있다.

2. 단순히 기능을 추가하지 않고, 프로그램 설계 방식을 변화시킨다.

3. 대기를 필요로 하는 여러 개의 작업을 동시에 잘 수행할 수 있다.

 

=> 이 작업이 완료되길 기다리는 동안 다른 작업을 수행할 수 있도록 하는 것

 

+ 본문 내용 중 ThreadsBot 식당 이야기를 통해 자세히 설명해주고 있는데, 너무 자세해서

초보자도 금방이해할 수 있을 것 같다.

 

Asyncio로 해결할 수 있는 것은?

 

1. 스레드를 사용하는 선점형 멀티태스킹보다 안전한 대안이 될 수 있다.

2. 동시에 수천 개의 소켓 연결을 간단히 처리할 수 있다.

 

=> 스레딩의 장단점과 우리가 비동기 프로그래밍에 대해 잘못알고 있는 점들을 바로잡아주면서

Asyncio에 대해 설명한다. 기존에 스레드를 직접 다뤄보지 않았더라도, 책에 쉬운 실습코드가 제공되기에

부담없이 실습하며 진행하기 좋았다.

 

파이썬의 비동기 기능, 누구를 위해 만들어졌나?

 

1. 최종 사용자 개발자

- 애플리케이션을 개발할 때 asyncio를 사용하길 원하는 사람들로, 책에서 필자는 우리와 같은 사람들을 지칭했다.

 

2. 프레임워크 개발자 혹은 설계자

- 최종 사용자 개발자들이 애플리케이션을 개발할 때 사용하는 프레임워크와 라이브러리를 만드는 사람들

 

=> 파이썬 공식 문서는 프레임워크 개발자에게 적합한데, 최종 사용자 개발자가 대략적으로 파이썬 공식 문서를

읽을 경우 혼란에 빠지는 것을 방지하기 위해 책을 쓰셨다고 한다!

 

 

 

마무리 하며..

 

비동기 프로그래밍에 대해 관심이있고, 많은 예제를 접해보고 싶은 개발자에게 적합한 책이다.

다만 소켓이나 통신의 개념, http에 대한 내용을 알고있어야 이책을 더 잘 활용할 수 있을 것 같다.

학부 1, 2학년에겐 다소 적합하지 않을 것 같고, 어느정도 CS 개념을 배우고 파이썬을 접해본 3학년 학생이상에게 추천한다.

 

예전에 리눅스에서 소켓을 구현해서 뭔가 통신을 했던 과제를 진행했던 적이 있는데, 그 과제를 하기 전 이책을 읽었다면 정말 이해가 잘됐을 것 같다. 그만큼 소개가 너무 잘되어있고, 책도 비교적 얇은 편이기에 부담없이 읽을 수 있어서 비동기 프로그래밍을 배우길 원하는 사람에게 꼭 추천해주고 싶은 책이다 :D

 

 

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

 

 

20210523_074600.jpg

 



이번에 리뷰를 하게 된 도서는 O'REILLY 사의 Using Asyncio in Python 이다.

 

일단 첫 느낌은 책이 127페이지 정도라 상당히 얇게 느껴졌다.

하지만 내용은 묵직할 것이란 예감이 들었다.

 

 

우선 Asyncio를 설명하기 위하여 Thread를 사용할 시 문제점을 아주 재미있는 예시(ThreadingBot 식당 이야기)를 통하여 설명하고 있었는데 나는 이 책에서 이 예시가 가장 재미있게 느껴지고 Thread 사용 시 경합(Race Condtion)에 대해서 알고 있는 독자라면 공감하면서 이야기를 읽어나갈 수 있을 것 같다.

 

 

그리고 Thread의 장/단점을 설명해주고 Asyncio를 설명한다.

내용 자체는 개념 설명을 하고 있기에 천천히 읽다보면 이해가 잘 되는 편인것 같다.

그림은 없고 예제 코드가 나오고 해당 코드를 해석해주는 방식이라 자칫 지겹게 느껴질 순 있지만 그래도 나름 라인별 설명을 해주니 이해하는데는 도움이 되었다.

 

 

그리고 TIP 등으로 저자가 추천하는 Python 학회 동영상 및 정보들을 많이 알려주어 향후 참고하면 도움이 될것 같았다.

 

 

조금 아쉽게 느껴진 부분은 IT도서이며 번역서이니 억지로 용어들을 한글로 번역하려다보니 그냥 발음 그대로 적거나 단어가 어색한 것이 느껴지는건 어쩔수 없나보다.

 

 

그래도 이 도서를 통하여 Asyncio(비동기 통신) 개념에 대하여 조금은 이해도가 생긴것 같은데 몇번은 더 읽어봐야겠다.

 

ps. 아직도 ThreadingBot 식당 이야기 예시는 참 기발하단 생각이 든다 하하.


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

  • 비동기 프로그래밍
    • "한 회사원이 있다. 전화도 받아야 하고 결재 올려 승인을 받아야 하고 메일도 보내야 하고 고객과 만나 업무도 처리해야 한다. 가끔 바쁠 때 "몸이 열 개면 좋겠다"라고 말한다."
    • "멀티 스레드는 실제 몸이 열 개이다. 그래서 전화 받는 공무원, 메일 보내는 공무원, 민원 처리하는 공무원이 각각 존재한다. 당연히 빠르다. 하지만 전화를 끊은 공무원은 시간이 남아도 다른 일을 도와주지 않는다. 그냥 논다."
    • "비동기식 프로그래밍은 '몸이 열 개면 좋겠다'라고 생각만 하고 결국 혼자 모든 일을 다 한다. 대신 엄청나게 똑똑하고 몸이 빠르다. 상사에게 결재 올려 승인이 날 때까지 기다리지 않고 전화도 받고 메일도 보낸다. 이 분은 '일머리'를 안다. 똑똑하고 체계적이고 계획적이다. 열 명의 공무원 부럽지 않다."
    • 어떤 블로그의 글을 옮긴 것인데, 내가 본 비동기 프로그래밍에 대한 설명 중 가장 직관적이다.
    • 이 글에 있는 예시처럼 비동기 프로그래밍은 일을 던지고 기다리고 받으며 굉장히 효율적으로 처리한다.
    • 입력(input)과 출력(output)이 업무의 대부분일 경우에 진가를 발휘하기 때문에 네트워크 프로그래밍이라는 이름으로 불리는 경우도 있다.

 

  • Asyncio
    • 이름 그대로 비동기 입출력(asyncronous input/output) 라이브러리.
    • 파이썬은 상당히 최근인 버전 3.4에 asyncio 라이브러리가 도입되었고, 버전 3.5에 async와 await 키워드가 도입되어 기존에 비해 상당히 효율적으로 비동기 프로그래밍을 수행할 수 있게 되었다.
    • 그러나 책의 맨 끝에 언급되어 있듯 이것이 파이썬의 첫 시도는 아니었다. 무려 1996년 파이썬 버전 1.5.2에 asyncore가 있었다.
    • 못 쓸 물건이라는 말을 듣던 asyncore에 수천 명의 기여자들이 노고를 보태어 현재의 asyncio가 탄생했고, 상당히 편해졌다고는 하나 코루틴블로킹콘텍스트 전환익스큐터 이런 말들이 익숙하지 않은 나같은 사람에게는 서로 차분히 알아가는 과정이 조금은 반드시 필요하다.

 

  • 솔직히, 책을 잘못 골랐다.
    • 5월 리뷰도서로 가장 원했던 책은 이 책이 아니었다.
    • 그러나 한편으로 현재 진행중인 업무에서 시간이 많이 소모되는 부분이 분명히 있기에 어디선가 주워들은 asyncio를 배워볼 생각에 함께 골랐는데, 내가 소화할 수준의 책은 아니다.
    • 책은 잘못이 없다. 오히려 피상적으로만 알고 지나갈 수 있는 부분을 적절한 예제 코드와 함께 설명해주고 있고, 170 페이지의 1cm가 안 되는 얇은 두께에서 asyncio의 계층적 구조까지 친절하게 설명해주고 있다.
    • 내가 너무 준비가 안 돼있었다. 비동기 방식을 사용해서 웹크롤링이라도 몇 번 해봤으면 훨씬 나았을텐데 기본적인 용어와 개념 탑재가 미비했고 기초를 차근차근 알려주는 것은 이 책의 목적이 아니다 보니 나와 책 사이의 간극이 빠져서야 알게 되는 크레바스처럼 다가왔다.
    • 대체 어떻길래 그러나 궁금하는 분들을 위해 잠시 설명하면, 스레딩 방식의 문제점을 설명한 2장이 끝나고 Asyncio 공략이라는 제목이 붙은 3장이 들어가자마자 저자의 인용문이 등장한다.

"Asyncio는 일곱 가지 기능만 알면 충분하다 (일반적 용도로 가정할 때)" - 유리 셀리바노프

 

    • 그리고 단 6 페이지에 일반적 용도에 대한 설명이 완료된다.
    • 그 뒤에 코루틴, async, await에 대한 상세한 설명이 이어지지만 원리부터 알려주는 친절한 설명에 일반적 용도가 묻힌다. 구글링을 해서 관련 글을 너댓개쯤 읽어보고 유튜브 영상을 총 한시간 남짓 보고 나니 감이 좀 잡혔다. 이 책 정도로 근본부터 설명해주는 자료는 파이콘 발표영상 몇 개를 빼고는 찾지 못했다.
    • 거듭 말하지만, 독자에게 적당한 수준의 경험이 있었다면 피와 살이 될 친절한 설명이다. 

 

  • 여러분이 사용하지 않는 Asyncio 라이브러리 20개
    • 책의 중반부를 시작하는 4장의 제목이다.
    • 짧지 않은 예제 코드와 함께 Asyncio 라이브러리, 그리고 Twisted나 Janus와 같은 다른 비동기 라이브러리를 소개한다.
    • 예제 코드도 뉴스 스크레이핑, 다중 소켓, 어플리케이션 성능 모니터링 등 나와는 거리가 제법 멀지만 사용자에 따라 매우 유용할 수 있는 것들이다.
    • 비동기 프로그래밍 경험이 충분한 이라면 여기서 충분한 과실을 수확할 수 있을 것이라 생각한다.
          
  • 부족한 경험이지만 욕심이 난다.
    • 이 책에 실린 대다수 예시도 그렇고, 인터넷에서 찾은 예시도 그렇고 웹이나 데이터베이스에서 데이터를 가져오는 데 asyncio가 유용해보인다.
    • 주 업무가 크롤링인 분들도 제법 계시는 것으로 알지만, 내게 이런 식의 작업이 유용했던 적은 단 한번이었고 그나마 지시도 받지 않은 일을 만들어 했던 것이었다 - 특정 분야의 8년치 논문을 긁어 분석한 적이 있다.
    • 하지만 이 책의 맨 처음과 끝에 나오는 예시처럼, 컴퓨터에 일을 시키는데도 asyncio가 유용해 보인다.
    • 멀티스레딩, 멀티프로세싱과 함께 사용하면 상당히 효율적으로 일을 할 수 있을 것 같은데 날카롭게 도끼를 가는데 시간을 쓰는 나머지 정작 장작을 팰 시간이 없을까 걱정이다.
    • 일단 한 차례 완독을 하고 예제 코드를 손 끝에서 실행해봤다는데 만족하려고 한다. 
    • 이 기억을 언젠가는 살릴 좋은 기회가 있으리라 믿고, 도끼 날을 바짝 세울 그 날을 기다려본다.
  • ※ 한빛미디어 2021 도서 서평단 "나는 리뷰어다"의 일원으로 도서를 제공받아 작성한 리뷰입니다.

 

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를 필요한 업무에 잘 적용할 수 있는 개발자로 성장하기를 기원한다.


 

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

 

다운로드.png

 


Using Asyncio in Python 책을 읽어보았다. 파이썬에서 가장 핫한 이슈가 비동기 처리 이슈이다. 파이썬은 GIL(Global Interpreter Lock) 때문에 멀티 코어를 사용하는데에 제약이 약간 있다. 그렇다고 해서 파이썬에서 멀티코어를 사용 못하는건 아니지만 NodeJS같은 비동기 처리가 Multi-thread를 관리 하는 것보다 편리한 측면이 있어서 인기가 날로 많아진 것은 사실이다. 나는 현 프로젝트에서 Twisted를 사용하고 있어 파이썬의 Asyncio 를 사용하는 경험이 많이 없었지만 이번 기회를 통해 파이썬 비동기에 대해 잘 알게 된 것이다. 

 

간단하게 얘기하면 파이썬의 Asyncio는 파이썬에서 정식으로 지원하는 버전이라 이를 기반으로 여러 프레임워크, 모듈을 만들수 있다. 이 책을 보면서 가장 공감한 것은 파이썬 Asyncio 관련 공식 문서를 보면 일반 사용자가 사용하는 수준의 문서는 아니라는 것이다. 문서를 읽고 적용하는 부분에 어려움이 많이 있었다. 이 책은 그 부분을 적극 공감하여 해당 문서의 수준을 설명하며 내용을 잘 풀었다.

 

또한 Asyncio를 사용하면서 실수 하거나, 해석이 애매한 부분들을 잘 설명해서 실수를 범하지 않도록 도와줬다. 파이썬의 자체 Asyncio를 사용한 경험이 없어서 경험이 많은 사람들은 당연히 알 수 있는 내용이겠지만 경험이 많지 않은 나에게는 도움이 많이 됐다. 

 

이 책의 내용을 주절히 설명하기보단 자신이 파이썬 Asyncio를 공부를 해야하는데 여러 설명이 잘되어있는 문서를 찾아 공부를 하며 조금 더 이해력을 올리고 싶다면 이책을 꼭 읽어보길 추천한다. 

 

이 책에서도 Twisted에 관한 아주 조금 설명이 되어있지만 Twisted와 비교를 잠시 해보려고 한다. 서로의 단점은 사실상 많지만 실제 사용자 입장에서 경험을 해봐야하는 주관적인 부분이라 장점만 나열 하도록 한다.

 

Twisted

장점

- 강력한 프레임워크로 필요한 모듈은 다 구현이 되어있어 가져다 쓰면된다. (Http, ftp, ssh, dns, db connection 등등..)

- 파이썬의 Asyncio를 가지고 같이 결합을 할 수가있다.

- Deferred 객체를 사용하여 콜백 시스템을 사용 할 수 있다.

- Reactor라는 코어 모듈이 스케줄링을 할 수 있도록 보장 해준다.

- PyQT에서도 Twisted를 활용 할 수가있다. 

- inlinecallbacks가 추가되어 보다 더 편리하게 비동기 처리를 할 수 있도록 한다.

- Twisted 내에서 제공하는 Thread를 활용하여 Thread Pool 을 비동기 처럼 관리 할 수 있다.

 

Python Asyncio

장점

- 파이썬 3.5부터 async def 키워드를 정식으로 지원하기로 시작했다.

- 특별한 모듈이나 라이브러리를 사용하지 않아도 파이썬만 있으면 비동기 프로그램을 작성 할 수 있다.

- uvloop 이란 강력한 이벤트 루프를 사용하여 비동기 성능을 끌어 올릴 수 있다.

- 파이썬에서 정식으로 지원 하는 거라 코드의 유지보수 가 용이하다.

 

 

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

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 상품명 :
파이썬 비동기 라이브러리 Asyncio
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
파이썬 비동기 라이브러리 Asyncio
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
파이썬 비동기 라이브러리 Asyncio
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실

최근 본 상품1