2017년 7월 19일 수요일

python ctypes extension

python에서 다른 언어를 사용할때, 특히 C,
ctypes은 매우 중요한 모듈중 하나입니다.

왜냐하면, ctype은 python와 c 를 이어주는 브릿지 같은것입니다.

c로 바인딩 한다는 것은 무한한 확장성을 가지게 되는 것입니다.

1. 사용하고 싶은 라이브러리가 python에는 없는데 c로 구현된 것이 있을때,
  c로 작성된 library는 엄청나게 많습니다. 이걸 그냥 쓸 수 있다는 것은 굉장한 이점이 있는것이죠
  수많은 오픈 소스 라이브러리들을 우군으로 끌어들일 수 있는 부분이 있는 것이죠,

보통 괜찮다 싶은 라이브러리 들은 공개 되어 있는 경우가 많고
호환성을 위해서라도 c로 porting이 되어있는 경우가 많습니다.

굳이 모든것을 다 만들 필요없이 적절한 타이밍에서는 공개된 모듈을 붙여서
빨리 만드는것들이 중요한 순간이 있죠,

여기서 ctypes의 진가들이 들어납니다.

2. python 은 prototype으로 사용하고, 빠른처리가 필요한 부분은 C로 작성.
보통 프로토 타입으로 python 으로 빠르게 작성을 하다가, 병목이 생기거나 하는 부분은 C로 코딩해서
변경하면, 개발 속도도 만족할 수 있고, 성능도 만족할 수 있습니다.
현재 python과 머신들은 굉장히 빠른편이지만,

3. encapsulation 파이썬 코드는 일반적으로 open이 되어있기 때문에, 숨기고 싶은 부분이 있으면
C로 작성해서 encapsulation시키면 됩니다.

그리고 c++을 붙이는 방법, c++을 바로 붙이는 방법은 지원하지는 않습니다만,
c++은 보통 extern 함수등을 이용해서, c형식으로 변경한다음에 다른 language와 붙일 수 있습니다.

파이썬도 마찬가지지요,

4. 또 다른 방법중의 하나는 boost python 을 사용하는 방법입니다.
c++의 치트키 boost algorithm역시 파이썬을 쉽게 붙이는 방법을 제공합니다.
boost library가 만능치트키입니다. ctypes보다도 쉽게 붙일 수 있습니다.