Cython 編譯器的兼容性


將 *.PY 源代碼編譯成 *.PYD 動態庫,最多可提速 20 - 30%。

Cython v0.29.36 是 3.x 之前的最後一個穩定版本。

  1. 信號/槽

  2. Cython v3.x 編譯 PyQt PySide 時,要求信號/槽變量數一緻,否則無法運行。

  3. 産生原因

  4. 調用由 Cython 編譯生成的 *.PYD 文件與通過 Python 解釋器運行 *.PY 源代碼,存在些許差異;所以,編譯後的應用程序與源代碼版本也有差異。

    由於開發人員 (或理念) 的不同,發布後的代碼由 *.PY 源代碼格式變為 *.PYD 動態庫格式,這種差異就會自然産生。

    工程越大,齣現差異的可能性就越高。

    若源代碼在某些方麵與 Cython 不完全兼容,自然就有差異。

    由於 *.PYD 動態庫比 *.PY 源代碼可提速 20 - 30%,編寫的算法在運行時速度方麵也有差異。

  5. 兼容性一覽
  6. Cython CPython 平颱 功能 操作 說明 源代碼 備注
    0.29.15 3.6.8 Windows amd64 模塊路徑名 含 - 字符 提示找不到此模塊 正常
    QSettings 讀取彆名定製容器轉儲值 完全不兼容 正常 引發 _pickle.PicklingError
    0.29.27 3.8.10 Windows amd64 dict 調用 items() 方法 無法編譯 正常
    3.0.0 3.8.10 Windows amd64 QObject SIGNAL 信號聲明 槽自變量數量異於信號 正常 引發 TypeError
    str ASCII 文檔路徑 兼容不完整 正常 不兼容中文路徑
    *.PY 源代碼 *.C 中間代碼 不完整 正常 有代碼丟失
    3.0.2 3.8.10 Windows amd64 與現有模塊同名 編譯時 import 不編譯 正常
    open(file, mode="rb") *.C 中間代碼 不完整 正常 獲取內容為空
    數字字符操作 *.C 中間代碼 不完整 正常 丟失數字字符
    局部變量 list 調用 __init__() 特殊方法 編譯後無法運行 正常 引發 TypeError 需要自變量

版權聲明: 本文為獨傢原創稿件,版權歸 樂數軟件 ,未經許可不得轉載。