Cython是一种编程语言,它使Python语言的C扩展像Python本身一样简单。它旨在成为Python语言的超集,为其提供高级,面向对象,功能和动态编程。它的主要功能是支持可选的静态类型声明作为语言的一部分。源代码被转换为优化的C / C ++代码并编译为Python扩展模块。这允许非常快速的程序执行和与外部C库的紧密集成,同时保持Python语言众所周知的高程序员生产力。

主要的Python执行环境通常称为CPython,因为它是用C编写的。其他主要实现使用Java(Jython),C#(IronPython)和Python本身(PyPy)。用C语言编写,CPython有助于包装许多通过C语言接口的外部库。然而,在C中编写必要的粘合代码仍然是微不足道的,特别是对于像Python这样的高级语言更流利的程序员而不是像C这样的接近金属的语言。

Cython项目最初基于着名的Pyrex,通过源代码编译器将Python代码转换为等效的C代码来解决这个问题。此代码在CPython运行时环境中执行,但是以编译的C的速度执行,并且能够直接调用C库。同时,它保留了Python源代码的原始接口,这使得它可以直接从Python代码中使用。这些双重特性使Cython的两个主要用例成为可能:使用快速二进制模块扩展CPython解释器,以及将Python代码与外部C库连接

虽然Cython可以编译(大多数)常规Python代码,但生成的C代码通常可以从Python和C类型的可选静态类型声明中获得主要(有时令人印象深刻)的速度提升。这些允许Cython将C语义分配给代码的一部分,并将它们转换为非常有效的C代码。因此,类型声明可用于两个目的:将代码段从动态Python语义转换为静态和快速C语义,还用于直接操作外部库中定义的类型。因此,Cython将这两个世界合并为一种非常广泛适用的编程语言。

1.什么是Cython的更多相关文章

  1. 这是啥-Cython语言简单介绍

    Cython是一种既可以编写c又可以编写python的编程语言,他的目标是成为一个python语言的超集,为python提供高层次的.面向对象的.函数化.动态编程功能.不同于纯粹的python,它提供 ...

  2. 用cython提升python的性能

    Boosting performance with Cython     Even with my old pc (AMD Athlon II, 3GB ram), I seldom run into ...

  3. Cython:基础教程(1) 语法

    1 变量定义 http://docs.cython.org/src/reference/language_basics.html http://blog.csdn.net/i2cbus/article ...

  4. Cython: 快速入门

    1. Cython是什么? 它是一个用来快速生成Python扩展模块(extention module)的工具,语法是Python和c的混血.在Cython,C里的类型,如int,float,long ...

  5. 用Cython加速Python程序以及包装C程序简单测试

    用Cython加速Python程序 我没有拼错,就是Cython,C+Python=Cython! 我们来看看Cython的威力,先运行下边的程序: import time def fib(n): i ...

  6. cython教程

    .写测试代码: zhouhh@zhouhh-home:~$ vi test.pyx [python] view plaincopy def sayhello(char* str): if str == ...

  7. Cython的用法以及填坑姿势

    因为项目需要,需要优化已有的Python代码.目前Python代码的执行过程是将Python代码转变成一行行指令,然后解释器解释指令的执行,调用到C代码层.如果去掉指令解释这个阶段,直接进入C代码层, ...

  8. spaCy is a library for advanced natural language processing in Python and Cython:spaCy 工业级自然语言处理工具

    spaCy is a library for advanced natural language processing in Python and Cython. spaCy is built on ...

  9. Windows 8 Cython 的配置(解决Unable to find vcvarsall.bat问题)

    关键是安装之前配置编译器. 1.下载MinGW 编译器 http://www.mingw.org/download.shtml 2.把编译器路径(例如C:\Program Files (x86)\Co ...

  10. Cython入门Demo(Linux)

    众所周知,Python语言是非常简单易用的,但是python程序在运行速度上还是有一些缺陷.于是,Cython就应运而生了,Cython作为Python的C扩展,保留了Python的语法特点,集成C语 ...

随机推荐

  1. 获取某个参数的值 value

    Window("Flight Reservation").WinEdit("Order No:").Output CheckPoint("Order ...

  2. java陷阱之spring事物未提交和回滚导致不可预知问题

    案发现场 //防止全局配置了 所以这里定义sprnig 不托管事物 @Transactional(propagation = Propagation.NOT_SUPPORTED) public boo ...

  3. Sping面试题分析

    1.开放中主要使用Spring的什么技术? (1)IOC容器管理各层的组件 (2) 使用AOP配置声明式事务 (3)整合其他框架 2简述AOP和IOC概念 AOP : Aspect  Orienten ...

  4. C#中的Dynamic

    dynamic dyn = (dynamic)1; int j = (int)dyn; 可以看到1被强制转换成dynamic,然后又被强制转换回int. 然而dynamic可以隐式的转换成任何类型,并 ...

  5. Vijos—— T 1359 Superprime

    https://vijos.org/p/1359 描述 农民约翰的母牛总是生产出最好的肋骨.你能通过农民约翰和美国农业部标记在每根肋骨上的数字认出它们. 农民约翰确定他卖给买方的是真正的质数肋骨,是因 ...

  6. CF47A Triangular numbers

    CF47A Triangular numbers 题意翻译 给定一个数n,问你是否存在一个整数i,满足i*(i+1)/2=n. 若存在,输出"YES",否则输出"NO&q ...

  7. unix关于打包命令zip的使用

    unix zip命令的基本使用方法是: zip [參数] [打包后的文件名称] [打包的文件夹路径] linux zip命令參数列表: -a 将文件转成ASCII模式 -F 尝试修复损坏的压缩文件 - ...

  8. 远程视频监控之驱动篇(LED)

    转载请注明出处:http://blog.csdn.net/ruoyunliufeng/article/details/38515205 之前一直在考虑该不该写这篇,由于我之前在博客里有写过LED的驱动 ...

  9. JavaScript的那些坑之变量提升

    想总结一下JS的变量提升特性,都是由于一道题.先上题. var name = 'World!'; (function () { if (typeof name === 'undefined') { v ...

  10. YunOS曙光初现----看好阿里云OS----阿冬专栏!!

    阿里云os - YunOS 阿里云OS(YunOS)是阿里巴巴集团的智能手机操作系统,依托于阿里巴巴集团电子商务领域积累的经验和强大的云计算平台,基于LINUX开发. 魅族4阿里yun OS版已上市. ...