사냥꾼의 IT 노트

Python 병렬 라이브러리 개발 프로젝트 - ctypes에 대해 알아보자 본문

python

Python 병렬 라이브러리 개발 프로젝트 - ctypes에 대해 알아보자

가면 쓴 사냥꾼 2023. 1. 5. 21:49

※본 포스팅은 22년 9월~22년 11에 진행된 프로젝트의 연구노트입니다.

ctypes란?

ctypes는 C/C++로 만들어진 라이브러리를 파이썬에서도 이용할 수 있게 하는 라이브러리다.

https://docs.python.org/ko/3/library/ctypes.html

 

ctypes — A foreign function library for Python

Source code: Lib/ctypes ctypes is a foreign function library for Python. It provides C compatible data types, and allows calling functions in DLLs or shared libraries. It can be used to wrap these ...

docs.python.org

ctypes를 호출해 사용하는 법은 파이썬답게 간단하다. 다음 코드를 참고하자.

import ctypes
from ctypes.wintypes import POINT

dll, so

dll과 so는 각각 윈도우, 리눅스 환경에서 쓰이는 라이브러리 파일이다.

  1. dll: dynmic linkage library의 약자로, 동적 링크 라이브러리로 해석한다. 이는 C/C++로 작성되며 메인 함수가 존재하지 않는다. 기본적으로 헤더 파일, 메인 파일로 구성되어 빌드된다.
  2. so: shared object의 약자로, dll과 비슷하지만 별도의 코드 없이 함수만이 존재한다. 대부분 리눅스 환경에서 쓰인다.

파이썬에서 dll, so 라이브러리 사용하기

파이썬에서는 Ctypes 라이브러리로 C언어의 매개변수와 라이브러리를 바로 사용 가능하게 지원해준다. 이들은 파이썬 내에 클래스 형태로 정의되어 있으며, 최상위 클래스는 C로 정의된 구조체 형태로 존재한다.