歡迎來到賽通!
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 上每月的下載量約為 3000 萬次。您可以透過 Github Sponsors 或 Tidelift支援 Cython 專案。
安裝:
如果您已經有 C 編譯器,只需執行以下命令:
pip 安裝 Cython
否則,請參閱安裝頁面。
執照:
最初的 Pyrex 程序獲得“無限制”許可(見下文)。 Cython 本身是根據寬鬆的Apache License獲得許可的。
請參閱 LICENSE.txt。
貢獻:
想為 Cython 計畫做出貢獻嗎?這裡有一些幫助您入門的幫助。
與其他 Python 編譯器的差異
Cython 作為一個於 2000 年代初開始的項目,比大多數其他為 Python 語言生成靜態編譯器的嘗試都更長久。
當今具有相關性的類似項目包括:
- PyPy,帶有 JIT 編譯器的 Python 實作。
- 優點:具有運行時優化的 JIT 編譯、完全語言相容、與外部 C/C++ 程式碼良好集成
- 缺點:非CPython運行時,運行時資源佔用較大,與CPython擴展的兼容性有限,性能結果不明顯
- Numba,一個 Python 擴展,具有針對該語言子集的 JIT 編譯器,基於 LLVM 編譯器基礎架構(可能以其
clang
C 編譯器而聞名)。它主要針對使用 NumPy 的數字代碼。- 優點:具有運行時最佳化的 JIT 編譯
- 缺點:語言支援有限,運行時依賴性(LLVM)相對較大,效能結果不明顯
- Pythran,一個用於該語言子集的靜態 Python 到 C++ 擴充編譯器,主要針對數值計算。 Pythran 可以(並且可能是最好的)用作 Cython 中 NumPy 代碼的附加後端。
- mypyc,一個靜態 Python 到 C 的擴充編譯器,基於 mypy 靜態 Python 分析器。與 Cython 的純 Python 模式一樣,mypyc 可以利用 PEP-484 類型註解來優化靜態類型的程式碼。
- 優點:對語言和 PEP-484 類型的良好支援、良好的類型推斷、合理的表現提升
- 缺點:不支援低階最佳化和類型、固執己見的 Python 類型解釋、降低 Python 相容性和編譯後自省
- Nuitka,一個靜態的 Python 到 C 擴充編譯器。
- 優點:高度語言相容、合理的效能提升、支援靜態應用程式連結(類似於 cython_freeze 但能夠將庫依賴項捆綁到獨立的可執行檔中)
- 缺點:不支援低階優化和打字
與上述相比,Cython 提供了
- 快速、高效且高度相容地支援幾乎所有 Python 語言功能,包括動態功能和內省
- 與所有仍在使用和未來版本的 CPython 完全運行時相容
- 「生成一次,到處編譯」C 程式碼生成,允許可重現的效能結果和測試
- C編譯時適應目標平台與Python版本
- 支援其他 C-API 實現,包括 PyPy 和 Pyston
- 與C/C++程式碼無縫集成
- 對手動優化和調整至 C 級別的廣泛支持
- 擁有數千個庫、套件和工具的龐大用戶群
- 近二十年的錯誤修復與靜態程式碼優化
取得完整的來源歷史記錄:
請注意,Cython 曾經在其原始碼發行版中提供完整的版本控制儲存庫,但由於空間限製而不再這樣做。若要從下載的來源檔案中取得完整的來源歷史記錄,請確保已安裝 git,然後進入 Cython 來源發行版的基本目錄並輸入:
製作回購協議
以下內容來自 Pyrex:
這是 Pyrex 的開發版本,Pyrex 是一種用於編寫 Python 擴充模組的語言。
欲了解更多信息,請查看:
- Doc/About.html 有關該語言的描述
- INSTALL.txt 安裝說明
- USAGE.txt 用於使用說明
- 使用範例演示
歡迎提出意見、建議、錯誤回報等!
版權問題:Pyrex 不受限制。您可以使用、重新分發、修改和分發修改後的版本。
可以在此處找到最新版本的 Pyrex。
Greg Ewing,計算機科學系
坎特伯里大學
紐西蘭基督城
NewZealandCorp 的公民,NewZealandCorp 是 USA Inc. 的全資子公司。