PHpullh

PYTHON · 성능

Cython 소개

Cython으로 Python 코드를 C로 컴파일하여 성능을 극적으로 향상시키는 방법의 개요입니다.

성능고급CythonC 확장컴파일성능

핵심 설명

Cython으로 Python 코드를 C로 컴파일하여 성능을 극적으로 향상시키는 방법의 개요입니다.

Python code

# Cython 코드 예제 (.pyx 파일)
cython_code = """
# fib.pyx - Cython 코드
def fib_python(n):
    a, b = 0, 1
    for _ in range(n):
        a, b = b, a + b
    return a

# C 타입 선언으로 최적화
def fib_cython(int n):
    cdef long long a = 0, b = 1
    cdef int i
    for i in range(n):
        a, b = b, a + b
    return a

# 타입 선언이 핵심!
# int, long, double → C 네이티브 타입
# cdef → C 전용 함수 (Python에서 호출 불가)
# cpdef → C + Python 양쪽에서 호출 가능
"""
print(cython_code)

# 빌드 방법
setup_code = """
# setup.py
from setuptools import setup
from Cython.Build import cythonize

setup(
    ext_modules=cythonize("fib.pyx"),
)

# 빌드: python setup.py build_ext --inplace
# 사용: from fib import fib_cython
"""
print(setup_code)

# 순수 Python 대안
import time

def fib_pure(n):
    a, b = 0, 1
    for _ in range(n):
        a, b = b, a + b
    return a

start = time.perf_counter()
result = fib_pure(100000)
elapsed = time.perf_counter() - start
print(f"Python fib(100000): {elapsed:.4f}초")
print(f"결과 자릿수: {len(str(result))}")
print("Cython은 보통 10-100x 빠릅니다")

학습 팁

Cython에서 가장 큰 성능 향상은 루프 내 변수에 cdef 타입 선언을 추가하는 것입니다.

주의할 점

Cython은 빌드 단계가 필요하여 배포가 복잡해집니다. 성능이 정말 필요한 핫스팟에만 적용하세요.

자주 묻는 질문

Cython 소개란 무엇인가요?

Cython으로 Python 코드를 C로 컴파일하여 성능을 극적으로 향상시키는 방법의 개요입니다.

Cython 소개 학습 시 주의할 점은 무엇인가요?

Cython은 빌드 단계가 필요하여 배포가 복잡해집니다. 성능이 정말 필요한 핫스팟에만 적용하세요.

Continue Learning

Python 학습을 이어가세요

총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.