zoukankan      html  css  js  c++  java
  • Python的不同实现

    这里的实现指的是符合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! ') 

    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倍。

  • 相关阅读:
    Jzoj4822 完美标号
    Jzoj4822 完美标号
    Jzoj4792 整除
    Jzoj4792 整除
    Educational Codeforces Round 79 A. New Year Garland
    Good Bye 2019 C. Make Good
    ?Good Bye 2019 B. Interesting Subarray
    Good Bye 2019 A. Card Game
    力扣算法题—088扰乱字符串【二叉树】
    力扣算法题—086分隔链表
  • 原文地址:https://www.cnblogs.com/WeiGe/p/5606001.html
Copyright © 2011-2022 走看看