[Python 기초] Cython으로 Python 코드 성능 최적화하기

Cython은 Python의 단순성과 C의 성능을 결합한 프로그래밍 언어입니다. 이 기사에서는 Cython의 기본 사항, Python 프로젝트에 적용하는 방법, Cython을 사용하여 Python 코드의 성능을 최적화하는 방법에 대해 자세히 설명합니다.

1. 싸이썬 소개

Cython은 Python의 단순성과 C의 성능을 결합한 프로그래밍 언어입니다. Cython을 통해 개발자는 Python 코드를 작성하고 C 언어와 유사한 유형 선언을 사용하여 코드 실행 속도를 높일 수 있습니다. Cython 코드는 C 또는 C++ 코드로 컴파일된 다음 Python 확장 모듈의 형태로 Python 코드와 상호 작용할 수 있습니다.

2. 사이썬 작동 방식

Cython 소스 코드는 일반적 .pyx으로 확장자가 . Cython 컴파일러는 이러한 파일을 C 또는 C++ 코드로 변환한 다음 C 컴파일러를 사용하여 실행 가능한 바이너리로 컴파일합니다. 컴파일된 바이너리는 일반 Python 모듈처럼 가져와서 사용할 수 있습니다.

3. Python 프로젝트에서 Cython 사용하기

Python 프로젝트에서 Cython을 사용하려면 Cython 패키지를 설치해야 합니다. Cython은 다음 명령으로 설치할 수 있습니다.

pip install cython

다음으로 Python 코드를 Cython 코드로 변환합니다. 먼저 원래 Python 코드(예: my_module.py) 의 이름을 .pyx파일(예: my_module.pyx)로 바꿉니다. 그런 다음 setup.py다음 내용으로 Cython 모듈용 파일을 만듭니다.

from setuptools import setup
from Cython.Build import cythonize

setup(
    name="My Cython Module",
    ext_modules=cythonize("my_module.pyx"),
)

마지막으로 다음을 실행하여 Cython 모듈을 컴파일합니다.

python setup.py build_ext --inplace

일단 컴파일되면 Cython 모듈을 가져와 일반 Python 모듈처럼 사용할 수 있습니다.

4. 사이썬 코드 예제

피보나치 수열을 계산하기 위한 순수한 Python 함수가 있다고 가정합니다.

def fib(n):
    if n <= 1:
        return n
    else:
        return fib(n - 1) + fib(n - 2)

Cython으로 이 함수를 최적화하기 위해 다음과 같이 이름을 바꾸고 fib_cython.pyx유형 선언을 추가할 수 있습니다.

cpdef int fib_cython(int n):
    if n <= 1:
        return n
    else:
        return fib_cython(n - 1) + fib_cython(n - 2)

그런 다음 위의 단계에 따라 Cython 모듈을 컴파일하고 기본 Python 코드에서 가져와서 사용합니다.
계속

from fib_cython import fib_cython

print(fib_cython(10))

5. 성능 비교

최적화 후 Cython의 성능을 원래 Python 코드의 성능과 비교하기 위해 timeit모듈을 사용하여 두 함수의 실행 시간을 측정할 수 있습니다.

원시 Python 코드 성능 테스트

import timeit

def fib(n):
    if n <= 1:
        return n
    else:
        return fib(n - 1) + fib(n - 2)

print(timeit.timeit("fib(20)", globals=globals(), number=1000))

Cython 최적화 성능 테스트

from fib_cython import fib_cython
import timeit

print(timeit.timeit("fib_cython(20)", globals=globals(), number=1000))

성능 테스트 결과는 함수의 Cython 버전이 원래 Python 버전보다 몇 배 또는 수십 배 더 빠르다는 것을 보여줄 수 있습니다. 이 성능 향상은 계산 집약적인 작업에 특히 중요합니다.

6. 요약

Cython은 Python 코드의 성능을 최적화하는 간단하고 강력한 방법을 제공합니다. Python 코드를 Cython 코드로 변환하고 유형 선언을 추가하면 코드 실행 속도가 크게 향상될 수 있습니다. Cython은 과학 컴퓨팅, 데이터 처리 및 기계 학습 분야에서 광범위한 응용 가능성을 가지고 있습니다.

7. 참고문헌

  1. Cython 공식 문서: https://cython.readthedocs.io/en/latest/
  2. Python 시간 성능 비교: https://docs.python.org/3/library/timeit.html

추천

출처blog.csdn.net/qq_33578950/article/details/130297720