lang/py

Book 파이썬답게 코딩하기 - 그 밖의 파이썬 모듈

C/H 2020. 1. 27. 08:30

그 밖의 파이썬 모듈

파이썬답게 코딩하기

Greenlet

경량화 된 코루틴 라이브러리다.
마이크로스레드(Micro-thread)기반으로 강제적인 스케줄링이 없는 코루틴을 만든 것이다.
이 라이브러리를 이용한 geventeventlet이라는 모듈이 대표적이다.

pip3 install greenlet
# basic_greenlet.py
  # greenlet module
  Enter the work1 function
  Enter the work2 function
  Exit the work1 function
pip3 install gevent
# basic_gevent.py
  # gevent module
  [1] Enter the work function
  [2] Enter the work function
  [3] Enter the work function
  [4] Enter the work function
  [5] Enter the work function
  [6] Enter the work function
  [7] Enter the work function
  [8] Enter the work function
  [9] Enter the work function
  [5] Exit the work function
  [9] Exit the work function
  [3] Exit the work function
  [7] Exit the work function
  [8] Exit the work function
  [0] Exit the work function
  [2] Exit the work function
  [4] Exit the work function
  [1] Exit the work function
  [6] Exit the work function

greenlet, gevent는 스레드 기반의 코드에서 만들어졌기 때문에 API이름이 스레드 느낌이 난다.
gevent는 몽키패치라고 해서 운영 중에 코드를 수정할 수도 있지만 장단점이 있다.

Twisted

이벤트 중심(event-driven) 네트워킹 엔진이다.
내부적으로 네트워킹에 관한 라이브러리를 가지고 있지만 쉽게 웹 서버를 구착하기 위한 프레임워크다.
내부적으로 비동기 로직으로 구현 처리한다.
Python 2에서 사용할 수 있고 방식도 비교적 간단하다.

Tornado

twisted와 같은 파이썬 웹 프레임워크중 하나다.
빠른 응답성을 위해서 사용하고, 비동기 네트워크 라이브러리도 지원한다.
Asyncio 모듈이 자리잡기 전까지 tornado, twisted를 많이 사용 했다.

PP

Parallel Python의 약자로 비동기적으로 처리되지 않지만 병렬성을 활용해 작업 효율을 높여주는 라이브러리다.
하지만 SMP기반의 컴퓨터와 이 컴퓨터를 클러스터링한 환경에서만 동작한다.
현재 사용하는 PC가 SMP기반이고, 클러스터는 가상 머신으로 구축하면 테스트 가능하다.

반응형