将 *.PY 源代码编译成 *.PYD 动态库,最多可提速 20 - 30%。
Cython v0.29.36 是 3.x 之前的最后一个稳定版本。
Cython v3.x 编译 PyQt PySide 时,要求信号/槽变量数一致,否则无法运行。
调用由 Cython 编译生成的 *.PYD 文件与通过 Python 解释器运行 *.PY 源代码,存在些许差异;所以,编译后的应用程序与源代码版本也有差异。
由于开发人员 (或理念) 的不同,发布后的代码由 *.PY 源代码格式变为 *.PYD 动态库格式,这种差异就会自然产生。
工程越大,出现差异的可能性就越高。
若源代码在某些方面与 Cython 不完全兼容,自然就有差异。
由于 *.PYD 动态库比 *.PY 源代码可提速 20 - 30%,编写的算法在运行时速度方面也有差异。
Cython | CPython | 平台 | Function | 操作 | Explanation | Source Code | Remark |
---|---|---|---|---|---|---|---|
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 Source Code | 转 *.C 中间代码 | 不完整 | 正常 | 有代码丢失 | |||
3.0.2 | 3.8.10 | Windows amd64 | 与现有模块同名 | 编译时 import | 不编译 | 正常 | |
open(file, mode="rb") | 转 *.C 中间代码 | 不完整 | 正常 | 获取内容为空 | |||
数字字符操作 | 转 *.C 中间代码 | 不完整 | 正常 | 丢失数字字符 | |||
局部变量 list | 调用 __init__() 特殊方法 | 编译后无法运行 | 正常 | 引发 TypeError 需要自变量 |
Copyright Notice: This article is exclusive original manuscripts, copyrighted by Happy Digits Software , shall not be reproduced without permission.