From:https://blog.csdn.net/jeff_liu_sky_/article/details/52097060前端
https://stackoverflow.com/questions/17130975/python-vs-cpythonpython
解释器是一种让其余程序运行起来的程序,它是代码与机器的计算机硬件之间的软件逻辑层,Python解释器就是可以让Python程序在机器上执行的一套程序。
当咱们执行写好的Python代码时,Python解释器会执行两个步骤算法
一、把原始代码编译成字节码编程
编译后的字节码是特定于Python的一种表现形式,它不是二进制的机器码,须要进一步编译才能被机器执行,这也是Python代码没法运行的像C/C++ 同样快的缘由。若是Python进程在机器上拥有写入权限,那么它将把程序的字节码保存为一个以.pyc 为扩展名的文件,若是Python没法在机器上写入字节码,那么字节码将会在内存中生成并在程序结束时自动丢弃。在构建程序的时候最好给Python赋上在计算机上写的权限,这样只要源代码没有改变,生成的.pyc文件能够重复利用,提升执行效率。框架
二、把编译好的字节码转发到Python虚拟机(PVM)中进行执行编程语言
PVM是 Python Virtual Machine的简称,它是Python的运行引擎,是Python系统的一部分,它是迭代运行字节码指令的一个大循环、一个接一个地完成操做。 工具
Python解释器有三种主要的实现方式,CPython、Jython和IronPython 三种实现方式 。优化
一、CPython.net
CPython 是标准的实现,其它的都是有特定目标的。
CPython 是由C语言编写的,它是大多数Linux和Mac OS X机器预装的Python解释器,也是全部Python解释器中运行最快、最完整、最健全的。设计
二、Jython
Jython 是一种Python语言的替代实现方式,其目的是为了与Java编程语言集成,Jython 包含了Java类,这些类编译Python源代码、造成Java字节码,并将获得的字节码映射到Java虚拟机(JVM)上。由于Jython要比CPython 慢并且也不够健壮,它每每看做是一个主要面向寻找Java代码前端脚本语言的Java开发者的一个有趣的工具。
三、IronPython
IronPython 设计的目的是让Python 程序能够与Windows 平台上的.NET 框架以及与之对应的Linux的上开源的Mono编写成的应用集成。
psyco 系统不是Python的另外一种实现方式,而是Python字节码执行模块的一个扩展组件,它可让程序运行的更快。它是一个PVM的加强工具,这个工具收集并使用信息,在程序运行时,能够将部分程序的字节码转换成底层的真正的二进制机器代码,从而实现更快的执行速度。在开发个过程当中,Psyco无需代码的修改或独立的编译步骤便可完成这一转换。 归纳地讲,就是当程序运行时,Psyco收集了正在传递过程当中的对象的类别信息,这些信息能够用来裁剪对象的类型,从而生成高效的机器代码。机器代码一旦生成,就替代了对应的原始字节码,从而加快程序的总体执行速度。一些经过Psyco优化的Python代码的执行速度能够像编译好的C代码同样快。 由于字节码的转换与程序运行同时发生,因此Pysco每每被看作是一个即时编译器(JIT)。实际上Psyco是一个专有的JIT编译器:它生成机器代码将数据类型精简至你程序实际上所使用的类型。 Psyco是用纯Python的算法代码实现的。这点尤其重要,那些为了优化每每须要迁移到C的那部分代码,使用了Psyco后,这样的迁移就没有必要了。