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

파이썬 비동기 라이브러리 Asyncio 책을 읽어보았다. 파이썬에서 가장 핫한 이슈가 비동기 처리 이슈이다. 파이썬은 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 이란 강력한 이벤트 루프를 사용하여 비동기 성능을 끌어 올릴 수 있다.

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

 

 

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