해당 구문은 Python 언어 구문과 c 언어 구문
을 혼합한 것입니다. swig보다 Python 확장 모듈을 작성하는 것이 더 쉽습니다
아마 swig가 c 헤더 파일을 통해 직접 확장 모듈을 생성할 수 있다고 말할 수도 있지만 swig는 콜백 함수를 잘 지원하지 않습니다.
또한 swig를 사용하면 입력 매개변수를 python객체로 변환하고 출력을 python 객체로 변환하는 추가 코드를 작성해야 하는 경우가 많습니다. C 함수 매개변수가 입출력인 경우, C 함수의 매개변수에 콜백 함수가 있는 경우
, Cython에서는 int, float 등 C의 유형이 , long, char* 등은 모두 필요할 때 자동으로 Python 객체로 변환하거나, 변환에 실패하면 예외가 발생합니다. Cython의 가장 놀라운 점
게다가 Cython은 콜백 함수도 잘 지원합니다.
요컨대 Python 확장 모듈을 작성해야 한다면 Cython은 정말 좋은 도구입니다
cython은 linux에 설치됩니다:
[blueelwang@pythontab ~]$ wget https://pypi.python.org/packages/b7/67/7e2a817f9e9c773ee3995c1e15204f5d01c8da71882016cac10342ef031b/Cython-0.25.2.tar.gz [blueelwang@pythontab ~]$ tar xzvf Cython-0.25.2.tar.gz [blueelwang@pythontab ~]$ cd Cython-0.25.2 [blueelwang@pythontab ~]$ python setup.py install
[blueelwang@pythontab ~]$ sudo pip install Cython --install-option="--no-cython-compile"
[blueelwang@pythontab ~]$ sudo apt-get install cython
def say_hello_to(name): print("Hello %s!" % name)
으로 컴파일합니다. 3. Python 프로그램
from distutils.core import setup from distutils.extension import Extension from Cython.Distutils import build_ext ext_modules = [Extension("hello", ["hello.pyx"])] setup( name = 'Hello world app', cmdclass = {'build_ext': build_ext}, ext_modules = ext_modules )
*)4. Python을 사용하여 hello.so를 호출하고 호출 파일은 test.py입니다.
[blueelwang@pythontab ~]$ python setup.py build_ext --inplace
위 내용은 Cython 설치 및 사용 경험 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!