python html5 bootstrap 视频教程
德云社区 门户 IT 编程 编程语言 Python 查看内容

如何使用Cython才能效率最高 language_level compiler_directives变量

2020-4-16 19:40| 发布者: digitser| 查看: 267| 评论: 0|原作者: digitser

摘要: 如何使用Cython才能效率最高 language_level compiler_directives变量 这几年随着 Python 的流行,Cython 也跟着火了,那什么是 Cython 呢?Cython 是 C/C++ 和 Python 的结合体,基于 Pyrex 开发,故称为 Cython。C ...
AI人工智能 语音助理 人工翻译 教程
如何使用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

http://idepy.digitser.cn/


pyd 文件

.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 v3.1.4.2 build 20200413.181959

源码 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
# -*- coding: utf-8 -*-
#

__version__ = "0.1.7.1 build 20200301.060127" #采用全文替换小程序批量修改时,勾选文件版本复选框会自动更新
from distutils.core import setup
from Cython.Build import cythonize

#以下代码排版形式须严格遵守
modules = [
    "text.py"] #平时仅修改此处的要编译模块名,__init__.py 不支持编译
setup(
    ext_modules = cythonize(modules),
)

Python3.x
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#

__version__ = "0.1.7.1 build 20200301.060127" #采用全文替换小程序批量修改时,勾选文件版本复选框会自动更新
from distutils.core import setup
from Cython.Build import cythonize

#以下代码排版形式须严格遵守
modules = [
    "text.py"] #平时仅修改此处的要编译模块名,__init__.py 不支持编译
setup(
    ext_modules = cythonize(modules),
)

扫一扫关注 德云社区

更新时间:2020.04.16

版权声明:本文为独家原创稿件,版权归 德云社区,未经许可不得转载;否则,将追究其法律责任。

路过

雷人

握手

鲜花

鸡蛋

相关阅读

最新评论

相关分类

Cython 0.29.6 官方中文文档编制 官方教程 人工翻译 更新日志
Cython 0.29.6 官方中文文档编制 官方教程 人工翻译 更新日志 Cython 0.29.6 中文文档编制采用机器辅助 + 全人工翻译,完全采用 数字翻译 的文档翻译流程进行汉化 (未采用[58/2020-08-08]
Cython 0.29.6 官方中文文档编制 官方教程 手册 全人工翻译
Cython 0.29.6 官方中文文档编制 官方教程 手册 全人工翻译 以后不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为 Cython 0.29.6。 Cython 0.29.6 [142/2020-08-08]
Qt 4.8.7 官方中文文档编制 教程 在线手册 人工翻译 更新日志
Qt 4.8.7 官方中文文档编制 教程 在线手册 人工翻译 更新日志 以后不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为 Qt 4.8.7。 Qt 4.8.7 中文文档[38/2020-08-08]
PyInstaller 3.6 官方中文文档编制 官方教程 人工翻译 更新日志
PyInstaller 3.6 官方中文文档编制 官方教程 人工翻译 更新日志 PyInstaller 3.6 中文文档编制采用机器辅助 + 全人工翻译,完全采用 数字翻译 的文档翻译流程进行汉化 (未[38/2020-08-08]
PyInstaller 3.6 官方中文文档编制 官方教程 手册 全人工翻译
PyInstaller 3.6 官方中文文档编制 官方教程 手册 全人工翻译 以后不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为 PyInstaller 3.6。 PyInstalle[51/2020-08-08]
Qt 4.8.7 官方中文文档编制 在线手册 官方教程 全人工翻译
Qt 4.8.7 官方中文文档编制 在线手册 官方教程 全人工翻译 以后不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为 Qt 4.8.7。 Qt 4.8.7 中文文档编[38/2020-08-08]
Python2.7.18 官方中文文档编制 标准库教程 帮助文件 更新日志
Python2.7.18 官方中文文档编制 标准库教程 帮助文件 更新日志 CPython 2.7 原定于 2020 年 01 月 停止维护, 但官方却又于 2020 年 04 月发布了 CPython 2.7.18。 感谢德[41/2020-08-05]
Python3.6.8 官方中文文档编制 标准库教程 帮助文件 更新日志
Python3.6.8 官方中文文档编制 标准库教程 帮助文件 更新日志 网页背景由之前的白色主题,切换成黑色主题,保护视力及增强阅读体验。 完全采用 数字翻译 的文档翻译流程进[39/2020-08-05]
PySide1.2 2.x PyQt4 的 QComboBox.currentTextChanged 信号无响应解决办法
PySide1.2 2.x PyQt4 的 QComboBox.currentTextChanged 信号无响应解决办法 在 PySide1.2 PySide2.x PyQt4 中,使用 QComboBox.currentTextChanged 信号有时会无响应,如下[115/2020-06-29]
OpenCV 4.2.0 官方中文文档编制 官方教程手册 全人工汉化翻译
OpenCV 4.x 官方文档编制 中文教程 全人工翻译 中文在线手册 以后不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为 OpenCV 4.2.0。 OpenCV 4.2.0 [191/2020-06-15]
OpenCV 4.2.0 官方中文文档编制 教程手册 全人工翻译 更新日志
OpenCV 4.x 官方文档编制 中文教程 全人工翻译 更新日志 最近把网页背景由白色改为黑色,保护视力,不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本[274/2020-06-15]
CMake 3.x 官方文档编制 中文手册 全人工翻译 更新日志
CMake 3.x 官方文档编制 中文手册 全人工翻译 更新日志 最近把网页背景由白色改为黑色,保护视力,不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为[387/2020-06-15]
CMake 3.x 官方文档编制 中文教程 全人工翻译 中文在线手册
CMake 3.x 官方文档编制 中文教程 全人工翻译 中文在线手册 以后不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为 CMake 3.14。 CMake 3.14 中文文[86/2020-06-15]
多功能 高效快速 批处理式 文档翻译工具 人工翻译 手动翻译
多功能 高效快速 批处理式 文档翻译工具 人工翻译 手动翻译 文档翻译及 GUI 翻译,经常需要反复修改及快速重建。若想满足这些要求,批处理技术是最佳选择。 软件开发人员在[72/2020-06-15]
OpenCV ── 以图像处理 算法为主的跨平台开源计算机视觉库
OpenCV ── 以图像处理 算法为主的跨平台开源计算机视觉库 OpenCV 的全称 Open Source Computer Vision Library,又名 “开源计算机视觉库”。OpenCV 是一个开源发行的跨[103/2020-06-15]

Archiver|Sitemap|小黑屋|德云社区   

GMT+8, 2020-9-23 15:14 , Processed in 0.035304 second(s), 27 queries .

工业和信息化部: 粤ICP备14079481号-2

技术支持 乐数软件     版权所有 © 2014-2021 德云社区    

返回顶部