Cython 模块扩展 - 编程语言 替代实现 应用领域 汇总一览
Python 本身只是一种编程语言规范,可以使用其它编程语言实现它或扩展它;譬如:采有 Python C Java .Net 等重实现 Python,而采用 Python C/C++ C# Java .Net 等扩展 Python 实现。
但不管采用哪种编程语言实现 Python,都会基本遵守 Python 语言规范并带有常用 Python 内置函数及标准库模块。
替代实现
由官方维护的 CPython 是基于 C 编程语言实现的 Python,解释器采用 C 编程语言实现,也是最流行、兼容性最强的 Python 实现。最新版本支持 Python 3.9.7,Python 2.7.18 已于 2020 年停止维护。
由 Python 编程语言实现的 Python 称为 PyPy,解释器采用 Python 编程语言实现;具有无堆栈支持和即时编译器,官方称比 CPython 平均快 4.2 倍。最新版本支持 Python 3.7,稳定版本支持 Python 2.7.18。
由 .Net 编程语言实现的 Python 称为 IronPython,解释器采用 .Net 编程语言实现;IronPython 会生成 IL 中间语言,并将 Python 代码编译成 .NET 汇编。最新版本支持 Python 3.4,稳定版本支持 Python 2.7.18。
MicroPython 也是以 C 编程语言实现的 Python,主要用于物联网 MCU (微控制单元,又称单片机);但对 Python 做了大量简化,最新版本支持 Python 3.4。
由 Java 编程语言实现的 Python 称为 Jython,解释器采用 Java 编程语言实现。Jython 稳定版支持 Python 2.7.18。
Python for .NET 是基于 CPython 实现的另一实现,但它可管理 .NET 应用程序并使 .NET 库可用。

采用 Cython 扩展模块
这几年很流行,因为其采用类似 Python 的语法,按近似 C 的运行效率扩展 CPython 实现。
Cython 可以将现成 Python 编程语言编写的模块,转换成 C 中间代码,最后编译生成 *.PYD 模块,效率能提升 20%-50%。
Cython 常用于将类似 Python 语法编写的 *.PYX 扩展模块,转换成 C 中间代码,最后编译生成 *.PYD 模块,效率常能提升几倍以上 (运行效率接近于 C 语言)。
采用 Python 扩展模块
采用 Python 编程语言扩展 Python 的最出名开源工程是 PyPy。
当然,为改善 Python 本身的局限性,扩展其兼容性,有时还会采用 C/C++、C#、Java、.Net 等编程语言混合编程。
大家平时使用的大部分 CPython 扩展模块,也主要采用这种方式实现,主要因为其相对简单、成本低、效率高、可跨平台,还有兼容性强、现成模块多。
采用 C/C++ 扩展模块
即采用 C/C++ 编程语言扩展 Python,主要用于 CPython 实现;因为 CPython 实现底层就是采用 C 编程语言实现的。
但需要符合 CPython C/C++ API 规范 要求,且需编译生成 *.PYD 模块文档。

扫一扫关注 德云社区 微信公众号
Cython 模块扩展 - 编程语言 替代实现 应用领域 汇总一览的更多相关文章
- nginx/php的redis模块扩展
redis模块介绍 redis2-nginx-module 可以实现 Nginx 以非阻塞方式直接防问远方的 Redis 服务,可以启用强大的 Redis 连接池功能,进而实现更多的连接与更快速的访问 ...
- php的imagick模块扩展
imagick模块介绍 ImageMagick是一个用于查看.编辑位图文件以及进行图像格式转换的开放源代码软件套装.它可以读取.编辑超过100种图象格式,可用来替换GD库. 安装 在加载模 ...
- php的Memcached模块扩展
Memcached模块介绍 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态. ...
- 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验十一:PS/2模块⑤ — 扩展鼠标
实验十一:PS/2模块⑤ — 扩展鼠标 当普通鼠标即三键鼠标再也无法满足需求的时候,扩展鼠标即滚轮鼠标就诞生了,然而实验十一的实验目的就是实现滚轮鼠标的驱动.不过,进入整体之前,先让我们来了解一下鼠标 ...
- python cython 模块(1)
python 是一门动态类型的语音,其开发速度比C,C++等静态语言块, 但是速度慢很多, 而cython 通过混合C和python 的语法,可以提高python代码的运行速度 1) 安装cython ...
- AppCan JSSDK模块扩展
1. 从源码开始: 我们先看源码的8188行到9525行: window.appcan && appcan.define('window',function($,export ...
- Python学习笔记(迭代、模块扩展、GUI 、编码处理等)
PythonIDLE中的编码处理 http://www.tuicool.com/articles/NbyEBr 原文标题:Python中实际上已经得到了正确的Unicode或某种编码的字符,但是看起来 ...
- lnmp下用phpize动态安装PHP模块/扩展(不需要重装PHP)
安装前 安装前建议先执行 /usr/local/php/bin/php -m (此命令显示目前已经安装好的PHP模块)看一下,要安装的模块是否已安装.然后下载当前PHP版本的源码并解压. 本文以ima ...
- PHP不重新编译,单独添加模块扩展的方法
php自身提供了很多扩展,比如curl,gmp, mbstring等.我们在编译安装php时未必安装了所有扩展.那么在安装完php后,如果想单独安装某个php自身的扩展怎么办呢? 我们以curl扩展模 ...
随机推荐
- Elgamal加密算法和数字签名
简述:ElGamal公钥密码体制是由 T.ElGamal于 1985年提出的,直到现在仍然是一个安全性能良好的公钥密码体制.该算法既能用于数据加密也能用于数字签名,其安全性依赖于计算有限域上离散对数这 ...
- Java面向对象11——多态
多态 package oop.demon01.demon06; public class Application { public static void main(String[] a ...
- UE4点选源码分析
在UE插件开发中,时常会用到场景预览窗口的功能,也经常会有点选场景里的物体而同步改变工具界面的需求,网上教程多为讲解如何打开一个预览界面.在最近的一次需求开发中,我粗读了关卡编辑器和蓝图编辑器的Vie ...
- Bugku-域名解析
做题之前了解一下域名解析,域名是为了方便记忆而专门建立的一套地址转换系统,要访问一台互联网上的服务器,最终还必须通过IP地址来实现,域名解析就是将域名重新转换为IP地址的过程.一个域名对应一个IP地址 ...
- for循环中++i和i++的区别
语法 for (语句1; 语句2; 语句3) { 被执行的代码块 } 语句 1 在循环(代码块)开始前执行 语句 2 定义运行循环(代码块)的条件 语句 3 在循环(代码块)已被执行之后执行(这就是循 ...
- 1day漏洞反推技巧实战(1)
学习笔记里的存货(1) 以前看了一篇推特老外做赏金猎人的文章,感触有点深,作者没有写相关漏洞分析,只是说了自己挖了多少个漏洞,这里简单的分析下: 1day漏洞在很多时候至关重要,不管是在红蓝对抗,还是 ...
- 深入解析多态和方法调用在JVM中的实现
深入解析多态和方法调用在JVM中的实现 1. 什么是多态 多态(polymorphism)是面向对象编程的三大特性之一,它建立在继承的基础之上.在<Java核心技术卷>中这样定义: 一个对 ...
- beeline: 新版连接Hive server的工具
HiveServer2 支持一个新的命令行Shell,称为Beeline,它是基于SQLLine CLI的JDBC客户端.它是从 Hive 0.11版本引入的,是Hive新的命令行客户端工具.Hive ...
- 数据结构解析-HashMap
概要 HashMap在JDK1.8之前的实现方式 数组+链表,但是在JDK1.8后对HashMap进行了底层优化,改为了由 数组+链表+红黑树实现,主要的目的是提高查找效率. 如图所示: JDK版本 ...
- [ASP.NET MVC]@Scripts.Render、@Styles.Render的使用
一.配置BundleConfig.cs文件 1.首先要在App_Start 里面BundleConfig.cs 文件里面 添加要包含的css文件 2.BundleConfig就是一个微软新加的 一个打 ...