文档章节

【转载】Python的几种实现

摩云飞
 摩云飞
发布于 2012/11/06 16:56
字数 755
阅读 434
收藏 1

    Python自身作为一门编程语言,它有多种实现。这里的实现指的是符合Python语言规范的Python解释程序以及标准库等。这些实现虽然实现的是同一种语言,但是彼此之间,特别是与CPython之间还是有些差别的。

下面分别列出几个主要的实现。

CPython】

    这是Python的官方版本,使用C语言实现,使用最为广泛,新的语言特性一般也最先出现在这里。CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。

Jython】

    这是Python的Java实现,相比于CPython,它与Java语言之间的互操作性要远远高于CPython和C语言之间的互操作性。在Python中可以直接使用Java代码库,这使得使用Python可以方便地为Java程序写测试代码,更进一步,可以在Python中使用Swing等图形库编写GUI程序。Jython会将Python代码动态编译成Java字节码,然后在JVM上运行转换后的程序,这意味着此时Python程序与Java程序没有区别,只是源代码不一样。在Python 中写一个类,像使用Java 类一样使用这个类是很容易的事情。你甚至可以把Jython 脚本静态地编译为Java 字节码。示例代码:

from java.lang import SystemSystem.out.write('Hello World!\n')

Python for .NET】

    它实质上是CPython实现的.NET托管版本,它与.NET库和程序代码有很好的互操作性。

IronPython】

    不同于Python for .NET,它是Python的C#实现,并且它将Python代码编译成C#中间代码(与Jython类似),然后运行,它与.NET语言的互操作性也非常好。

PyPy】

    Python的Python实现版本,原理是这样的,PyPy运行在CPython(或者其它实现)之上,用户程序运行在PyPy之上。它的一个目标是成为Python语言自身的试验场,因为可以很容易地修改PyPy解释器的实现(因为它是使用Python写的)。

Stackless】

    CPython的一个局限就是每个Python函数调用都会产生一个C函数调用。 这意味着同时产生的函数调用是有限制的,因此Python难以实现用户级的线程库和复杂递归应用。一旦超越这个限制,程序就会崩溃。Stackless的Python实现突破了这个限制,一个C栈帧可以拥有任意数量的Python栈帧。这样你就能够拥有几乎无穷的函数调用,并能支持巨大数量的线程。Stackless唯一的问题就是它要对现有的CPython解释器做重大修改。所以它几乎是一个独立的分支。另一个名为Greenlets的项目也支持微线程。它是一个标准的C扩展,因此不需要对标准Python解释器做任何修改。

本文转载自:http://www.189works.com/article-79655-1.html

共有 人打赏支持
摩云飞
粉丝 370
博文 534
码字总数 952694
作品 0
徐汇
程序员
私信 提问
Ubuntu 14.04上使用CMake编译MXNet源码操作步骤(Python)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fengbingchun/article/details/85276256 MXNet源码版本号为1.3.0,其它依赖库的版本号可参考:https://blog....

fengbingchun
2018/12/27
0
0
数据提取之JSON与JsonPATH

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。适用于进行数据交互的场景,比如网站前台与后台之间的...

张元江_erel
2018/11/28
0
0
CPython的网友评论

CPython是用C语言实现的Python解释器,也是官方的并且是最广泛使用的Python解释器。除了CPython以外,还有用JAVA实现的Jython和用.NET实现的IronPython,使Python方便地和JAVA程序、.NET程序...

红薯
2009/12/11
880
1
尹立博:Python 全局解释器锁与并发 | AI 研习社第 59 期猿桌会

雷锋网 AI 科技评论按:作为排名靠前的最受欢迎和增长最快的编程语言之一,Python 是一种多用途、高级别、面向对象、交互式、解释型和对用户非常友好的编程语言,拥有卓越的可读性和极高的自...

丛末
2018/12/01
0
0
Python 如何传递运算表达式

点击关注异步图书,置顶公众号 媒体与你分享IT好书 技术干货 职场知识 首先要说明的一下,所描述的是 Python 中的 运算表达式 的部分,不是 Python 表达式的部分。 关于什么是 Python 中的运...

异步社区
2018/05/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

day27:expect批量杀进程|

1、linux下当前目录有一个文件ip-pwd.ini,内容如下: [root@localhost_002 shell100]# cat ip-pwd.ini 10.111.11.1,root,xyxyxy10.111.11.2,root,xzxzxz10.111.11.3,root,12345610.......

芬野de博客
今天
2
0
分布式之数据库和缓存双写一致性方案解析(二)

引言 该文是对《分布式之数据库和缓存双写一致性方案解析》,一文的补充。博主在该文中,提到了这么一句话 应该没人问我,为什么没有先更新缓存,再更新数据库这种策略。 博主当时觉得,这种...

hensemlee
今天
3
0
druid安装与案例

druid 可以运行在单机环境下,也可以运行在集群环境下。简单起见,我们先从单机环境着手学习。 环境要求 java7 或者更高版本 linux, macOS或者其他unix系统(不支持windows系统) 8G内存 2核C...

hblt-j
今天
0
0
bejson上线 gif转帧工具。

说道这个工具,不得不提一句经典格言“色Q是推动科技发展的动力” 有人发了这个图,我和所有人一样想看到那个瞬间。 当然,我没有PS,有没有太好的转帧工具,但是这并不妨碍我是一个技术死肥...

废柴大叔
今天
1
0
详解利用clear清除浮动的一些问题解决

下面这段代码是用来清除浮动带来的高度塌陷问题 .clearfix:before { content: "."; display: block; height: 0; clear: both; visibility: hidden;} Quest......

前端小攻略
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部