수색…


비고

Cython이란 무엇입니까?

Cython 프로그래밍 언어는 정적 유형 지정, C 함수를 직접 호출하는 기능 및 기타 여러 기능과 같은 C로 Python을 풍부하게합니다. 이렇게하면 Python과 유사한 구문을 사용하면서 C 수준 성능에 도달 할 수 있습니다.

어떻게 작동합니까?

Cython 코드는 cython 소스 - 소스 컴파일러를 사용하여 컴파일되어 C 또는 C ++ 코드를 생성합니다.이 코드는 C 컴파일러를 사용하여 컴파일 할 수 있습니다. 파이썬이나 실행 파일에서 가져올 수있는 확장을 만들 수 있습니다.

순수 Python과 달리 Cython이 얻을 수있는 주요 성능 향상은 CPython API를 우회하는 데 있습니다. 예를 들어, 두 개의 정수를 더할 때 파이썬은 각 변수에 대한 유형 검사를 수행하고 발견 된 유형을 충족시키는 추가 함수를 찾고 해당 함수를 호출합니다. Cython에서 생성 된 C 코드에서 유형은 이미 알고 있으며 오직 하나의 함수 호출 만 수행됩니다. 따라서 Cython은 유형이 명확한 수학 문제에 특히 효과적입니다.

내 코드 속도를 높이려면 어떻게 사용합니까?

일반적인 사용 사례는 Cython을 사용하여 프로그램 속도를 높이 려 할 때 코드를 프로파일 링하고 계산 비싼 부품을 컴파일 된 Cython 모듈로 이동하는 것입니다. 이렇게하면 코드의 대부분에 대해 Python 구문을 유지하고 가장 필요한 곳에 빠른 속도를 적용 할 수 있습니다.

Cython 설치하기

사이 썬을 사용하려면 두 가지가 포함되어 필요하신 사이 썬 패키지 자체이다 cython (예를 들어, NumPy와에 대한) 여러 C와 파이썬 라이브러리 소스 - 소스 컴파일러와 사이 썬 인터페이스를. cython 컴파일러에 의해 생성 된 C 코드를 컴파일하려면 C 컴파일러가 필요합니다.

1 단계 : Cython 설치

시스템 불가 지론

Cython 은 여러 시스템 불가지론 패키지 관리 시스템과 함께 설치할 수 있습니다. 여기에는 다음이 포함됩니다.

  1. pip 또는 easy_install을 통한 PyPI :

    $ pip install cython
    $ easy_install cython
    
  2. 아나콘다 콘도를 사용 :

    $ conda install cython
    
  3. enpkg 패키지 관리자를 사용하여 Enthought 캐노피 :

    $ enpkg cython
    

또한 소스 코드는 github 에서 다운로드하여 다음을 사용하여 수동으로 설치할 수 있습니다.

$ python setup.py install

우분투, 데비안

우분투에서는 cythoncython3 패키지를 사용할 수 있습니다. 이들은 위에서 언급 한 설치 옵션보다 오래된 버전을 제공합니다.

$ apt-get install cython cython3

Windows

Windows의 경우 pip를 사용하여 설치할 수있는 .whl 파일 은 타사에서 제공합니다. Windows에서 .whl 파일을 설치하는 방법에 대한 자세한 내용은 여기를 참조하십시오 .


2 단계 : C 컴파일러 설치

Cython에 의해 생성 된 C 파일을 컴파일하려면 C 및 C ++ 용 컴파일러가 필요합니다. gcc 컴파일러가 권장되며 다음과 같이 설치할 수 있습니다.

우분투, 데비안

build-essential 패키지에는 필요한 모든 것이 들어 있습니다. 다음을 사용하여 리포지토리에서 설치할 수 있습니다.

$ sudo apt-get install build-essential

XCode 개발자 도구 에는 gcc와 유사한 컴파일러가 포함되어 있습니다.

Windows

MinGW (Windows 용 Minimalist GNU)에는 gcc의 Windows 버전이 포함되어 있습니다. Visual Studio의 컴파일러를 사용할 수도 있습니다.

안녕하세요 세계

파이썬에서 사용되기 전에 Cython pyx 파일을 C 코드 ( cythonized )로 변환하고 컴파일해야합니다. 일반적인 접근법은 확장 모듈을 생성 한 다음 파이썬 프로그램으로 가져 오는 것입니다.

암호

이 예제에서는 세 개의 파일을 만듭니다.

  • hello.pyx 에는 Cython 코드가 들어 있습니다.
  • test.py 는 hello 확장을 사용하는 Python 스크립트입니다.
  • setup.py 는 Cython 코드를 컴파일하는 데 사용됩니다.

hello.pyx

from libc.math cimport pow

cdef double square_and_add (double x):
    """Compute x^2 + x as double.

    This is a cdef function that can be called from within
    a Cython program, but not from Python.
    """
    return pow(x, 2.0) + x

cpdef print_result (double x):
    """This is a cpdef function that can be called from Python."""
    print("({} ^ 2) + {} = {}".format(x, x, square_and_add(x)))

test.py

# Import the extension module hello.
import hello

# Call the print_result method 
hello.print_result(23.0)

setup.py

from distutils.core import Extension, setup
from Cython.Build import cythonize

# define an extension that will be cythonized and compiled
ext = Extension(name="hello", sources=["hello.pyx"])
setup(ext_modules=cythonize(ext))

컴파일

이것은 cython hello.pyx 를 사용하여 코드를 C로 변환 한 다음 gcc 사용하여 컴파일 할 수 있습니다. 더 쉬운 방법은 distutils가 이것을 처리하도록하는 것입니다 :

$ ls
hello.pyx  setup.py  test.py
$ python setup.py build_ext --inplace
$ ls
build  hello.c  hello.cpython-34m.so  hello.pyx  setup.py  test.py

공유 객체 (.so) 파일은 Python에서 가져와 사용할 수 있으므로 이제 test.py 실행할 수 있습니다.

$ python test.py
(23.0 ^ 2) + 23.0 = 552.0 


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow