美文网首页
PY08-07:Cython入门

PY08-07:Cython入门

作者: 杨强AT南京 | 来源:发表于2020-05-22 08:36 被阅读0次

      这个主题简单介绍下Cython这种混合Python与C++语法的语言的基本工作模式。这种混合语言都有翻译器的,与ASP,JSP,cu,proc等混合式语言一个德行,这里就不深入累述,都是"唯手熟尔"的活儿。


    关于Cython

    关于Cython

    • Cython是Python语言到C语言的翻译器, 它能让你利用Python语法实现达到C语言实现的运行速度。

      • Cython不是纯正的Python语言,而是类似Python语言,可以理解成C与Python混合语言。
    • 官方站点

      • https://cython.org/
    • 其他资源:

      • https://github.com/cython/cython/wiki
      • https://cython.readthedocs.io/en/latest/

    安装与测试Cython

    • Cython的安装采用Python的pip工具就可以安装,建议管理员权限。
      • 安装完毕即可执行cython编译实现编译
    Cython的安装与测试

    Cython使用模式

    • Cython的使用模式

      1. 使用Python的混合语法编写程序
      2. 翻译成C代码
      3. 编译成动态库
      4. 使用Python扩展模块调用
    • 可以使用下面图示说明

    Cython的工作模式图

    py与pyx代码

    • 因为Python2与3的缘故,需要添加一个特殊的额外注释。
      • # cython: language_level=3
    # cython: language_level=3
    class Sobel:
        def __init__(self):
            super(Sobel, self).__init__(self)
            self.m_data = 20
        
        def getData(self):
            return self.m_data
    
    
    
    • 注意:
      • 文件名不能是cython或者其他python的标注模块名。
      • 上面文件命名为:cy.pyx

    使用cython编译成C代码

    • 这个C代码很大,代码很累赘,比起自己写的C代码,目测性能不会高于自己写的C代码。

    • 命令:

      • cython cy.pyx
    编译后的C文件

    编译脚本

    from distutils.core import setup, Extension
    setup(
        name="=cy",
        version="1.0",
        ext_modules=[
            Extension("cy", sources=["cy.c"], language="C"), 
        ]
    )
    
    
    • 编译后的效果截图
    编译后的C扩展模块

    测试

    • 测试代码:
    import cy
    help(cy)
    
    
    • 执行命令:

      • python test.py
    • 测试效果截图

    扩展模块测试效果

    附录

    关于Cython的深入学习

    • 这种深入的学习基本上没有什么意义, 只对那些会用不会C的用来提高性能,这种方法不是最好的方法。如果你属于这种情况,那你就花点时间学习下cython吧。

    • 推荐学习资料:

      • https://cython.readthedocs.io/en/latest/
    • 几个学习教程也比较简单

    教程列表
    • Cython在国内看不见专门翻译的书籍,大家可以找E文书看看,推荐一个下载免费E文书的地址(感叹下:\color{red}{S}度啊,\color{red}{B}SDN啊,拿用户的分享文档无耻收费,这里顺便内心鄙视下)。

    相关文章

      网友评论

          本文标题:PY08-07:Cython入门

          本文链接:https://www.haomeiwen.com/subject/tpufahtx.html