cython 튜토리얼 Cython 시작하기

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

우분투, 데비안

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

$ apt-get install cython cython3

Windows

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

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com


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 

[출처] https://learntutorials.net/ko/cython/topic/2925/cython-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
102 [python 인터넷] 초간단 API서버 만들기 - 1부 (Python + Flask + Apache) file 졸리운_곰 2023.01.24 324
101 [python][인터넷] Flask 또는 Django를 Production 서버로 배포(Deploy)하기 file 졸리운_곰 2023.01.17 294
100 [python, 인터넷] Web Search Engine, 인터넷 검색 엔진 구현 file 졸리운_곰 2023.01.16 438
99 [Amazon S3 clone] minio 설치 및 파이썬 업로드 스크립트 졸리운_곰 2022.12.24 254
98 [python 인터넷] Python으로 XML-RPC 서버 구축 file 졸리운_곰 2022.06.28 501
97 [python 인터넷][네이버 뉴스 크롤링] python crawling - 네이버 뉴스 기사 크롤링 file 졸리운_곰 2022.06.28 356
96 [python 인터넷] How to Select CheckBox and Radio Button in Selenium WebDriver 졸리운_곰 2021.11.26 497
95 [python 인터넷] [Python] Selenium 사용하기 (+PhantomJS) file 졸리운_곰 2021.11.26 364
94 [python 인터넷] Python Selenium(셀레니움) 크롬창 활성 탭 변경하기 file 졸리운_곰 2021.11.26 366
93 [python 인터넷 ,selenium] selenium iframe 처리하기 file 졸리운_곰 2021.11.26 541
92 [python 인터넷] Selenium에서 특정 element가 갑자기 클릭이 되지 않을 때 (python) 졸리운_곰 2021.11.26 283
91 [python 인터넷] Selenium Python button 클릭 file 졸리운_곰 2021.11.26 311
90 [python 인터넷] Tor browser 로 selenium webdriver 크롤링 ip 우회 [Windosws] 졸리운_곰 2021.11.26 334
89 [python 인터넷] 파이썬 셀레니움을 이용한 DC인사이드 자동 글쓰기 file 졸리운_곰 2021.11.26 500
88 [Python][Dash] DASH PLOTLY 설치부터 튜토리얼까지 졸리운_곰 2021.09.11 383
87 python - 국가공휴일 데이터 가져오기 (data.go.kr) file 졸리운_곰 2021.09.05 220
86 [python][web] Separate Front-end from Back-end with Flask+AJAX file 졸리운_곰 2021.08.13 267
85 [scrapy] https://pypi.org/project/scrapy-save-as-pdf/ 졸리운_곰 2021.07.03 473
84 Pipeline to Download PDF or Save page as PDF for scrapy item 졸리운_곰 2021.06.26 302
83 [python, 인터넷] [카프카] Python으로 Kafka에 전송(Producer)하고 가져오기(consumer) file 졸리운_곰 2021.06.19 434
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED