사이썬에 오신 것을 환영합니다!
Cython은 Python 자체만큼 쉽게 Python용 C 확장을 작성할 수 있게 해주는 Python 컴파일러입니다. Cython은 Pyrex를 기반으로 하지만 더 많은 최첨단 기능과 최적화를 지원합니다.
Cython은 Python 코드를 C/C++ 코드로 변환하지만 추가적으로 C 함수 호출과 변수 및 클래스 속성에 대한 C 유형 선언을 지원합니다. 이를 통해 컴파일러는 Cython 코드에서 매우 효율적인 C 코드를 생성할 수 있습니다.
따라서 Cython은 외부 C 라이브러리를 래핑하고 Python 코드 실행 속도를 높이는 빠른 C 모듈에 이상적인 언어입니다.
- 공식 홈페이지: https://cython.org/
- 문서: https://docs.cython.org/
- Github 저장소: https://github.com/cython/cython
- 위키: https://github.com/cython/cython/wiki
Cython은 PyPI에서 매달 약 3천만 건의 다운로드를 기록하고 있습니다. Github Sponsors 또는 Tidelift를 통해 Cython 프로젝트를 지원할 수 있습니다.
설치:
이미 C 컴파일러가 있는 경우 다음 명령을 실행하십시오.
pip로 Cython 설치
그렇지 않으면 설치 페이지를 참조하세요.
특허:
원래 Pyrex 프로그램은 "제한 없이" 라이센스가 부여되었습니다(아래 참조). Cython 자체는 허용되는 Apache 라이센스 에 따라 라이센스가 부여됩니다.
LICENSE.txt를 참조하세요.
기여:
Cython 프로젝트에 기여하고 싶으신가요? 다음은 시작하는 데 도움이 되는 몇 가지 도움말입니다.
다른 Python 컴파일러와의 차이점
2000년대 초반에 프로젝트로 시작된 Cython은 Python 언어용 정적 컴파일러를 생성하려는 다른 대부분의 시도보다 오래되었습니다.
오늘날 관련성이 있는 유사한 프로젝트는 다음과 같습니다.
- JIT 컴파일러를 사용한 Python 구현인 PyPy입니다.
- 장점: 런타임 최적화를 통한 JIT 컴파일, 완전한 언어 호환, 외부 C/C++ 코드와의 우수한 통합
- 단점: 비 CPython 런타임, 상대적으로 큰 런타임 리소스 사용량, CPython 확장과의 제한된 호환성, 명확하지 않은 성능 결과
- Numba는 LLVM 컴파일러 인프라(아마
clang
C 컴파일러로 가장 잘 알려져 있음)를 기반으로 언어 하위 집합에 대한 JIT 컴파일러를 제공하는 Python 확장입니다. 주로 NumPy를 사용하는 숫자 코드를 대상으로 합니다.- 장점: 런타임 최적화를 통한 JIT 컴파일
- 단점: 제한된 언어 지원, 상대적으로 큰 런타임 종속성(LLVM), 명확하지 않은 성능 결과
- Pythran은 언어 하위 집합을 위한 정적 Python-C++ 확장 컴파일러로, 주로 수치 계산을 대상으로 합니다. Pythran은 Cython에서 NumPy 코드에 대한 추가 백엔드로 사용될 수 있으며 아마도 가장 좋습니다.
- mypyc는 mypy 정적 Python 분석기를 기반으로 하는 정적 Python-to-C 확장 컴파일러입니다. Cython의 순수 Python 모드와 마찬가지로 mypyc은 PEP-484 유형 주석을 사용하여 정적 유형에 대한 코드를 최적화할 수 있습니다.
- 장점: 언어 및 PEP-484 입력에 대한 우수한 지원, 우수한 유형 추론, 합리적인 성능 향상
- 단점: 낮은 수준의 최적화 및 입력 지원 없음, 독선적인 Python 유형 해석, 감소된 Python 호환성 및 컴파일 후 자체 검사
- 정적 Python-to-C 확장 컴파일러인 Nuitka입니다.
- 장점: 높은 언어 호환성, 합리적인 성능 향상, 정적 애플리케이션 연결 지원(cython_freeze와 유사하지만 라이브러리 종속성을 자체 포함 실행 파일로 묶는 기능 포함)
- 단점: 낮은 수준의 최적화 및 입력을 지원하지 않습니다.
위와 비교하여 Cython은 다음을 제공합니다.
- 동적 기능 및 자체 검사를 포함하여 거의 모든 Python 언어 기능에 대한 빠르고 효율적이며 호환성이 높은 지원
- 아직 사용 중인 모든 CPython 버전과 향후 버전과의 완전한 런타임 호환성
- 재현 가능한 성능 결과 및 테스트를 허용하는 "한 번 생성하고 모든 곳에서 컴파일" C 코드 생성
- 대상 플랫폼 및 Python 버전에 대한 C 컴파일 시간 적응
- PyPy 및 Pyston을 포함한 다른 C-API 구현 지원
- C/C++ 코드와의 완벽한 통합
- 수동 최적화 및 C 레벨까지의 조정을 위한 폭넓은 지원
- 수천 개의 라이브러리, 패키지 및 도구를 갖춘 대규모 사용자 기반
- 거의 20년간의 버그 수정 및 정적 코드 최적화
전체 소스 기록을 얻으세요:
Cython은 소스 배포판에 전체 버전 제어 저장소를 제공했지만 공간 제약으로 인해 더 이상 제공하지 않습니다. 다운로드한 소스 아카이브에서 전체 소스 기록을 얻으려면 git이 설치되어 있는지 확인한 다음 Cython 소스 배포판의 기본 디렉터리로 이동하여 다음을 입력하세요.
저장소를 만들다
다음은 Pyrex에서 가져온 것입니다.
이것은 Python 확장 모듈 작성을 위한 언어인 Pyrex의 개발 버전입니다.
자세한 내용은 다음을 참조하세요.
- 언어에 대한 설명은 Doc/About.html
- 설치 지침은 INSTALL.txt
- 사용법 지침은 USAGE.txt
- 사용 예에 대한 데모
의견, 제안, 버그 보고서 등을 환영합니다!
저작권 관련 사항: Pyrex에는 제한이 없습니다. 귀하는 수정된 버전을 사용, 재배포, 수정 및 배포할 수 있습니다.
Pyrex의 최신 버전은 여기에서 찾을 수 있습니다.
Greg Ewing, 컴퓨터 과학부
캔터베리 대학교
크라이스트처치, 뉴질랜드
USA Inc.가 전체 지분을 소유한 자회사인 NewZealandCorp의 시민입니다.