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

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

2020-4-16 19:40| 发布者: digitser| 查看: 435| 评论: 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

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

路过

雷人

握手

鲜花

鸡蛋

相关阅读

最新评论

相关分类

数字IDE 注册机 注册码生成器 内存破解器 附详细使用方法
数字IDE 注册机 注册码生成器 内存破解器 附详细使用方法 完整 完美破解补丁 注册机 注册码生成器 内存破解器,破解后与 VIP 客户在功能方面没有任何区别。 数字 Python [34/2021-02-21]
Qt 6.0精减WebEngine SerialPort Multimedia等成为半残GUI框架一览 何解
Qt 6.0精减WebEngine SerialPort Multimedia等成为半残GUI框架一览 何解 由于 Qt 集成了大量成熟模块,使之成为 C++ 领域中最好用的开源技术跨平台 GUI 开发框架。 基于 Q[29/2021-02-16]
Qt 6.0.1 官方中文文档编制 中文手册 中文帮助 更新日志
Qt 6.0.1 官方中文文档编制 中文手册 中文帮助 更新日志 以后不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为 Qt 6.0.1。 Qt 6.0.1 中文文档编制[36/2021-02-15]
Qt 6.0.1 官方中文文档编制 中文手册 中文帮助 全人工翻译
Qt 6.0.1 官方中文文档编制 中文手册 中文帮助 全人工翻译 以后不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为 Qt 6.0.1。 Qt 6.0.1 中文文档编[30/2021-02-15]
Visual Studio Build Tools 2017 2019 en-US for Windows VCTools C/C++编译工具
Visual Studio Build Tools 2017 2019 en-US for Windows VCTools C/C++编译工具包 主要针对 MicroSoft Windows 7 8 10 平台为进行 C/C++ 代码编译而构建的官方离线编译工[38/2021-02-11]
Windows7 Visual Studio 2017 2019 修正 vs_installer.opc certificate is invalid
Windows7 Visual Studio 2017 2019 修正 vs_installer.opc certificate is invalid Windows7 SP1 for Visual Studio Installer 2017 2019 离线安装包有时会无声自动退出,[15/2021-02-11]
Windows7 SP1如何修正Visual Studio 2017 2019 certificate is invalid 问题
Windows7 SP1如何修正Visual Studio 2017 2019 certificate is invalid 问题 Windows7 SP1 无法安装 Visual Studio 2017 2019 离线安装包的主要问题,是系统需要安装特定补[31/2021-02-11]
Windows7 修正 Visual Studio 2017 2019 安装程序清单签名验证失败
Windows7 修正 Visual Studio 2017 2019 安装程序清单签名验证失败 Windows7 SP1 for Visual Studio Installer 2017 2019 离线安装包弹出 安装程序清单签名验证失败 提示对[18/2021-02-11]
数字 Python IDE 注册机 注册码生成器 附详细破解方法
数字 Python IDE 注册机 注册码生成器 附详细破解方法 完整 完美破解补丁 注册机 注册码生成器,破解后与 VIP 客户在功能方面没有任何区别。 数字 Python IDE 目前还在不[153/2021-01-15]
超高分子量聚乙烯 UHMWPE 和聚四氟乙烯 (塑料王 PTFE) 性能对比
超高分子量聚乙烯 UHMWPE 和聚四氟乙烯 (塑料王 PTFE) 性能对比 聚四氟乙烯 PTFE聚四氟乙烯是当今世界上耐腐蚀性能最佳材料之一,因此有塑料王之美称,又称铁氟龙 特氟龙。[48/2021-01-11]
QtGui QTextCharFormat() QPlainTextEdit() 最好在使用时才设置
QtGui QTextCharFormat() QPlainTextEdit() 最好在使用时才设置 当实例化 QPlainTextEdit() QTextEdit() 使用 QtGui QTextCharFormat() 与 setCurrentCharFormat() 设置要[493/2020-11-04]
PySide6出来了 PySide2却还未完全稳定 不能用于生产环境
PySide6出来了 PySide2却还未完全稳定 不能用于生产环境 PySide6 正式成为官方文档名 (见下方链接),何时成为官方工程名称,等 Python for Qt 6 正式对外发布就可知。 Ren[458/2020-11-03]
psutil 5.7.0 官方中文文档编制 中文手册教程 人工翻译
psutil 5.7.0 官方中文文档编制 中文手册教程 人工翻译 网页背景为黑色以保护视力,未上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译为 psutil 5.7.0。 psu[387/2020-10-19]
psutil 5.7.0 中文文档编制 中文手册教程 人工翻译 更新日志
psutil 5.7.0 中文文档编制 中文手册教程 人工翻译 更新日志 网页背景为黑色以保护视力,未上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译为 psutil 5.7.0。[70/2020-10-19]
PyQt 4.11.4 for Qt 4.8.7 中文文档编制 手册 人工翻译 更新日志
PyQt 4.11.4 for Qt 4.8.7 中文文档编制 手册 人工翻译 更新日志 最近把网页背景由白色改为黑色,保护视力,不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工[79/2020-10-19]

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

GMT+8, 2021-3-1 06:24 , Processed in 0.037880 second(s), 27 queries .

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

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

返回顶部