Pybind11 사용법: C++과 Python의 완벽한 브릿지 만들기

Bean·2025년 11월 5일

프로그래밍

목록 보기
40/46

🧩 C++과 파이썬의 연결 고리, Pybind11 완전 정리

🚀 C++ 성능을 그대로 Python에서 쓰는 방법


Python은 생산성이 뛰어나지만, 고성능 연산에서는 C++에 비해 속도가 떨어집니다.
그럴 때 C++로 작성된 코드를 Python에서 직접 불러와 사용하는 기술,
바로 파이바인딩(Pybind)이 활약합니다.


💻 Pybind의 역할과 빌드 결과물

Pybind는 C++ 코드를 Python 모듈 형태로 컴파일해주는 도구입니다.
이 과정을 거치면, C++로 작성된 함수를 마치 일반 파이썬 함수처럼 import하여 사용할 수 있습니다.

운영체제생성 파일 확장자설명
Windows.pydDLL과 동일한 동적 라이브러리로, Python에서 바로 import 가능
Linux/macOS.soShared Object 파일로, DLL과 같은 역할 수행

즉, C++ 소스(.cpp)를 컴파일하면 플랫폼별 동적 라이브러리(.pyd 또는 .so)가 생성되고,
이 파일을 Python 모듈처럼 바로 불러 쓸 수 있게 되는 것입니다.


🛠️ Pybind를 위한 필수 구성 요소

Pybind를 사용하려면 다음 세 가지가 필요합니다.

  1. C++ 컴파일러

    • Windows: MSVC
    • Linux: GCC
    • macOS: Clang
      이들이 C++ 코드를 바이너리 라이브러리로 컴파일합니다.
  2. 바인딩 라이브러리

    • 대표적으로 Pybind11을 사용합니다.
      Python과 C++의 데이터, 함수, 객체를 매끄럽게 연결해줍니다.
  3. 빌드 자동화 도구

    • CMake 또는 Setuptools를 활용해 빌드 과정을 자동화합니다.
    • 실제 Python 배포 시에는 setup.py 내에서 CMake를 호출하는 방식이 자주 쓰입니다.

간단히 말해:
C++ 코드 + Pybind11 + 빌드도구 → 파이썬 모듈(.pyd/.so)


✏️ Hello Pybind11! — 기본 예제

1️⃣ C++ 코드 (example.cpp)

#include <pybind11/pybind11.h>
namespace py = pybind11;

int add(int i, int j) {
    return i + j;
}

PYBIND11_MODULE(example, m) {
    m.doc() = "pybind11 example plugin";
    m.def("add", &add, "A function which adds two numbers");
}

이 코드는 add 함수를 Python에서 example.add()로 호출할 수 있도록 바인딩합니다.


2️⃣ 빌드 스크립트 (setup.py)

from setuptools import setup, Extension
import pybind11

cpp_args = ['-std=c++17']

module = Extension(
    'example',
    ['example.cpp'],
    include_dirs=[pybind11.get_include()],
    language='cpp',
    extra_compile_args=cpp_args,
)

setup(
    name='example',
    version='1.0',
    description='A test project using pybind11',
    ext_modules=[module],
)

3️⃣ 빌드 및 실행

패키지 설치

pip install pybind11 setuptools

컴파일 실행

python setup.py build_ext --inplace

빌드 후, 같은 폴더에 example.pyd(Windows) 또는 example.so(Linux/macOS)가 생성됩니다.

Python에서 실행

>>> import example
>>> example.add(5, 10)
15
>>> example.add(100, 200)
300

이렇게 C++로 작성한 함수를 Python 코드처럼 손쉽게 실행할 수 있습니다.


⚡ 마무리 — Pybind로 두 세계를 잇다

Pybind는 단순히 C++ 코드를 불러오는 기술이 아니라,
Python의 유연함과 C++의 성능을 결합하는 강력한 도구입니다.

수학 연산, 시뮬레이션, 3D 처리, AI 네트워크 연산 등
성능이 중요한 영역에서 Pybind11은 최적의 솔루션이 될 수 있습니다.

profile
AI developer

0개의 댓글