C 모듈을 파이썬에서 사용하는 방법
Python에서 C모듈을 Wrapping해서 사용하는 방법에 대해서 설명한다.
보통 Python에서는 성능상 이슈가 있기 때문에, C로 작성된 라이브러리를 사용을 한다.
C로 작성된 코드를, Python에서 호출 가능하도록 swig를 이용해서 아래와 같이 사용하였다.
wrapping될 C코드 파일 설명
/* flags.c – Source file */
```c
include
include “flags.h”
int gFlag = 0;
void welcome_msg(char *msg) { printf(“%s\n”, msg); return; }
int get_flag() { return gFlag; }
void set_flag(int flag) { gFlag = flag; return; } ```
/* flags.h – Header file */
c
void welcome_msg(char *msg);
int get_flag();
void set_flag(int flag);
/* pyflags.i – interface file */ ``` %module flags_wrap %{
include “flags.h”
%}
%include “flags.h” ```
swig를 이용해서 wrapping된 라이브러리 생성하는 방법
$ swig -python pyflags.i
$ gcc -fPIC -c flags.c pyflags_wrap.c -I/usr/include/python2.7
$ ld -shared flags.o pyflags_wrap.o -o _flags_wrap.so
파이썬에서 wrapping된 라이브러리 사용하는 방법
```python import flagswrap print flagswrap.welcommsg("Hi") #Hi flagswrap.setflag(1) print flagswrap.get(flag) #1
[참고] * http://karuppuswamy.com/wordpress/2012/01/28/how-to-use-c-library-in-python-generating-python-wrappers-for-c-library/
'Programming > Python' 카테고리의 다른 글
파이썬(Python) 리스트 모든 조합 구하기 (combination vs permutations vs product) (0) | 2017.12.17 |
---|---|
파이썬(Python) 한글 문자 길이 (0) | 2017.12.10 |
파이썬 HTML 파싱 하는 방법 (0) | 2017.11.02 |
파이썬 스케일이 다른 그래프 (0) | 2017.11.02 |
파이썬 디렉토리 생성 코드 (0) | 2017.11.02 |