码迷,mamicode.com
首页 > 编程语言 > 详细

Python的不同实现

时间:2016-06-22 10:46:21      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:

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

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

1.CPython:

              这是Python的官方版本,使用C语言实现,使用 最为广泛,新的语言特性一般也最先出现在这里。

              CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。 

2.Jython:

             这是Python的Java实现,相比于CPython,它与Java语言之间的互操作性要远远高于CPython和C语言之间的互操作性。 

             在Python中可以直接使用Java代码库,这使得使用Python可以方便地为Java程序写测试代码,更进一步,可以在Python中使用Swing等图形库编写GUI程序。 

             Jython会将Python代码动态编译成Java字节码,然后在JVM上运行转换后的程序,这意味着此时Python程序与Java程序没有区别,只是源代码不一样。 

             在Python 中写一个类,像使用Java 类一样使用这个类是 很容易的事情。 你甚至可以把Jython 脚本静态地编译为Java 字节码。 

             示例代码:
             fromjava.langimportSystemSystem.out.write(‘Hello World!\n‘) 

3.Python for .NET:

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

4.IronPython:

            不同于Python for .NET,它是Python的C#实现,并且它将 Python代码编译成C#中间代码(与Jython类似)(我的添加:应理解成:IronPython会将Python代码动态编译成C#中间代码,然后在CLR上运行转换后的程序,这意味着此时Python程序与C#程序没有区别,只是源代码不一样。),然后运行,它与.NET语言的互操 作性也非常好。 

5.PyPy:

            Python的Python实现版本,原理是这样的,PyPy运行在CPython(或者其它实现)之上,用户程序运行在 PyPy之上。 

            它的一个目标是成为Python语言自身的试验场,因为可以很容易地修改PyPy解释器的实现(因为它是使用Python写的 )。 

6.Stackless:

            CPython的一个局限就是每个Python函数调用都会产生一个C函数调用。这意味着同时产生的函数调用是有限制 的,因此Python难以实现用户级的线程库和复杂递归应用。 

            一旦超越这个限制,程序就会崩溃。Stackless的Python实现突破了这 个限制,一个C栈帧可以拥有任意数量的Python栈帧。这样你就能够拥有几乎无穷的函数调用,并能支持巨大数量的线程。 

            Stackless唯一的问题就是它要对现有的CPython解释器做重大修改。所以它几乎是一个独立的分支。另一个名为Greenlets的项目也 支持微线程。 

            它是一个标准的C扩展,因此不需要对标准Python解释器做任何修改。

7、Medusa:

            作为一种解释型语言,Python有优点,也有缺点。它简单灵活,但编写大型软件时,其执行速度会低于其它原生/JIT语言。Medusa 项目的目标就是要克服Python的这一缺点,提供功能更强大、执行速度更快的Python。

            该项目基于Dart虚拟机,用Qt/C++、Python和Dart实现。它不仅为Python提供了一个更快的执行环境,而且还保持着Python原有的灵活性。Medusa将Python代码实时编译成Dart代码,然后由Dart虚拟机直接编译成机器代码。

            与CPython相比,通过Medusa生成的代码要快10~15倍。

Python的不同实现

标签:

原文地址:http://www.cnblogs.com/WeiGe/p/5606001.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!