如何使用Cython才能效率最高 language_level compiler_directives变量 这几年随着 Python 的流行,Cython 也跟着火了,那什么是 Cython 呢?Cython 是 C/C++ 和 Python 的结合体,基于 Pyrex 开发,故称为 Cython。Cython 主要用于将采用 C/C++ 编程语言编写的 .c 文件或采用 Python 编程语言编写的 .py .pyw 文件编译 打包成 .pyd 模块文件,当然也能编译采用 Cython 规范编写的 .pyx pxd 文件。 Dython 是 Digitser (或 Digitizing Digital Digitization Data 或 Data technology) 和 Python 的结合体,故称为 Dython。Dython 由德云社区基于自身的数字化技术理念提出,乐数软件开发 维护的很多应用都有 Python Cython 的影子;而 Dython 则是 Cython Python 的一种统称,也是一种数字化理念的抽象。譬如 DyWeb DyERP DyPLM 中的 Dy,文字被简化但含义不变。 智能编辑重构 批处理式 "数字 Python IDE" 集成开发环境 (集成高效 Cython PyInstaller 批处理小程序) http://dt.digitser.cn/zh-CN/ide/idepy/index.html
.pyd 文件是由非 Python,其它编程语言编写 (或直接把 .py 文件转换成 .c 中间文件) 编译生成的 Python 扩展模块,是类似 .so .dll 动态链接库的一种 Python 文件。 每个 .pyd 文件实际上都封装了一个 Python module 模块。使用时,采用 import 路径名.modulename 或 from 路径名.modulename import ** 语言,路径名为 .pyd 文件所在的路径。 基于 Qt GUI (图形用户界面) 框架的 PyQt PySide for Python 绑定,会为每个二次开发胶水代码所对应的 Qt/C++ 库 .dll 文件生成一个中间 .pyd 文件。PyWin32 项目分发包中,也存在很多 MicroSoft Windows OS 相应 .dll 文件的中间 .pyd 文件 (包括编译好的 Cython 模块本身)。 Cython 可将个人基于 Python 语言编写的 Python 模块编译成具有 C 语言特性的 .pyd 文件。由于 .pyc .pyo 文件很容易被反编译出源码,而采用 .pyd 文件在这方面就有不少优势 (当比较 Cython 编译前后源码 结果就能看出)。 源码 Cython 源码 Cython 化批处理工具 工具名 源码 Cython,打包分布 .exe 文件请使用 源码 PyInstaller。 以后不用再一条条输命令,且效率不是一般的高,此工具也是国内外首个深度集成 Cython 的大批量高效处理工具。 若有使用外部或自定义模块, 请把相应路径添加到控制台配置对话框 PATH 变量框中,批量生成的 .PYD 文件, 都会被移到源代码目录下。 .PY 源代码经 Cython 化后有一些效率提升, 虽不是很明显但能感觉到 (要求更高请编写 .py .pyw .c 文件)。Cython 文档编制,快速入门教程在此。 Cython 会先把 .PXD .PY .PYW .PYX 文件转换成 .C 中间代码, 再编译成 .PYD 模块文件; 因此, 反编译 .PYD 文件只能获得 .C 中间代码 (无法获得最初源代码)。 编译时会根据所调用的 Python 解释器版本,自动切换 校正 .C 中间代码相应 2.7 3.x 语言级别 (自动配置 compiler_directives language_level 变量对应关系); 但须按以下代码形式, 编写 setup.py 编译配置文件 (这是目前,后期会增加自动生成功能): Python2.7 #!/usr/bin/env python2 Python3.x #!/usr/bin/env python3 扫一扫关注 德云社区 微信公众号 版权声明: 本文为独家原创稿件,版权归 德云社区,未经许可不得转载。 |