2011년 10월 29일 토요일

Python Extending and Embedding

Extending과 Embedding 말이 비슷하고 이부분 은근히 헷갈립니다.

- Extending :  파이썬에서 C모듈을 불러오는것,

- Embedding : C에서 파이썬 모듈을 불러오는 것,

실제로 인터넷등을 검색하다보면, Extending에 대한 자료는 무척이나 많습니다.

반면에 Embedding에 대한 내용은 상대적으로 빈약합니다.

제가 보기엔 둘다 중요합니다.

파이썬을 쓰다보면, 프로토 타입으로 파이썬으로 작성하고, 속도가 안나오는 부분에 대해서 C로 작성을 한다음에 Extending해서 C모듈을 불러오는 식으로 많이들 쓰시기 때문에, 그렇습니다.

반대로 임베딩의 경우는 되기야되는데, C쪽에서 파이썬 메모리관리를 문제삼아 퍼지는경우도 상당히 많기 때문에, 잘쓰이지도 않고요, 파이썬 인터프리터는 내장하는 방식이라서 덩치고 커지고 해서,  그 내용이 덜한것 같습니다.


이종 언어간의 데이터 전송은 골치아픈점이 상당히 많습니다.
이종 언어간의 I/F를 붙이는 작업을 마샬링이라고 합니다.

정석대로 Extending을 하려면, 함수도 엄청 많고, 번거롭습니다.
그래서 나온 접착모듈들이 있습니다. 기본내장은 ctypes 입니다.

이것을 사용하면, 지저분한 wrapper 작업들을 한큐에 끝내서, 사용할 수가 있습니다.

ctypes 말고도, SWIG이라는 wrapper 전문 패키지도 있고,

SWIG의 경우에는 .i 라는 interface 파일을 따로 작성해야됩니다.

ctypes관련되어서는 따로 페이지를 하나 내어서 설명을 드리도록하겠습니다.

2011년 10월 23일 일요일

[책소개] Python Text Processing by Jeff McNeil


이 책을 소개해 드립니다.

내용이 상당히 많은 부분을 다루고 있고, 텍스트 프로세싱이라는 것이 별거 아닌거 같지만,

제대로 할려면 만만한 부분은 아니라고 생각합니다.

이 책에서 소개하고 있는 내용은 기본적인 I/O핸들링 부터 시작해서,


  • python에서 기본제공하는 라이브러리 사용
  • CSV read/write, json 파일 포맷
  • Regular expression (정규표현식이라고도 하죠)
  • Mark up Language (XML, HTML) handling 
  • 템플릿 (여기서는 mako template을 소개합니다), 
  • 유니코드 , 인코딩. 디코딩
  • 아웃풋 포맷팅(pdf, excel, odf)
  • parsing, NLTK 
이런 주제들을 다루고 있습니다. 

제가 보니깐, 저 위에 나열된 작업들은 보통 일반적으로 끼고 사는 경우가 많습니다. 

시간 소비도 많고요,  위에 있는 아이템만 제대로 하셔도 , 

일찍 퇴근하는데 많은 도움이 됩니다. 

저런것들은 어디서 따로 가르쳐주는데도 없고 하는데, 

정말 내용구성은 좋은거 같습니다. 깊이는 들어가지 않더라도, 한번씩 훑어주므로, 

정작 필요할때는  advanced 하게 들어갈수 있도록 길잡이 역할을 하는 책입니다.