Python学习笔记之二——Python的运行机制
2016-08-02 19:05
232 查看
Python解释器简介
解释器是一种让其他程序运行起来的程序,它是代码与机器的计算机硬件之间的软件逻辑层,Python解释器就是能够让Python程序在机器上执行的一套程序。当我们执行写好的Python代码时,Python解释器会执行两个步骤
把原始代码编译成字节码
编译后的字节码是特定于Python的一种表现形式,它不是二进制的机器码,需要进一步编译才能被机器执行,这也是Python代码无法运行的像C/C++ 一样快的原因。如果Python进程在机器上拥有写入权限,那么它将把程序的字节码保存为一个以.pyc 为扩展名的文件,如果Python无法在机器上写入字节码,那么字节码将会在内存中生成并在程序结束时自动丢弃。在构建程序的时候最好给Python赋上在计算机上写的权限,这样只要源代码没有改变,生成的.pyc文件可以重复利用,提高执行效率。
把编译好的字节码转发到Python虚拟机(PVM)中进行执行
PVM是 Python Virtual Machine的简称,它是Python的运行引擎,是Python系统的一部分,它是迭代运行字节码指令的一个大循环、一个接一个地完成操作。
Python 解释器的几种实现版本
Python解释器有三种主要的实现方式,CPython、Jython和IronPython 三种实现方式1. CPython
其中CPython 是标准的实现,其它的都是有特定目标的。
CPython 是由C语言编写的,它是大多数Linux和Mac OS X机器预装的Python解释器,也是所有Python解释器中运行最快、最完整、最健全的。
2. Jython
Jython 是一种Python语言的替代实现方式,其目的是为了与Java编程语言集成,Jython 包含了Java类,这些类编译Python源代码、形成Java字节码,并将得到的字节码映射到Java虚拟机(JVM)上。因为Jython要比CPython 慢而且也不够健壮,它往往看作是一个主要面向寻找Java代码前端脚本语言的Java开发者的一个有趣的工具。
3. IronPython
IronPython 设计的目的是让Python 程序可以与Windows 平台上的.NET 框架以及与之对应的Linux的上开源的Mono编写成的应用集成。
Psyco 实时编译器
psyco 系统不是Python的另一种实现方式,而是Python字节码执行模块的一个扩展组件,它可以让程序运行的更快。它是一个PVM的增强工具,这个工具收集并使用信息,在程序运行时,可以将部分程序的字节码转换成底层的真正的二进制机器代码,从而实现更快的执行速度。在开发个过程中,Psyco无需代码的修改或独立的编译步骤即可完成这一转换。概括地讲,就是当程序运行时,Psyco收集了正在传递过程中的对象的类别信息,这些信息可以用来裁剪对象的类型,从而生成高效的机器代码。机器代码一旦生成,就替代了对应的原始字节码,从而加快程序的整体执行速度。一些通过Psyco优化的Python代码的执行速度可以像编译好的C代码一样快。
因为字节码的转换与程序运行同时发生,所以Pysco往往被看做是一个即时编译器(JIT)。实际上Psyco是一个专有的JIT编译器:它生成机器代码将数据类型精简至你程序实际上所使用的类型。
Psyco是用纯Python的算法代码实现的。这点尤为重要,那些为了优化往往需要迁移到C的那部分代码,使用了Psyco后,这样的迁移就没有必要了。
—独乐乐不如众乐乐—
相关文章推荐
- python学习笔记-基础篇-day03 python历史、32bit和64bit系统的区别,系统运行机制浅析
- VS 2008 学习笔记(2) --- MFC 应用程序的运行机制
- Linux内核运行机制学习笔记
- java学习笔记之java的运行机制
- 【Python 学习手册笔记】Python 如何运行程序
- <转>ASP.NET学习笔记之理解MVC底层运行机制
- 【转】ASP.NET MVC学习笔记-MVC运行机制之源码剖析
- python学习笔记之二:使用字符串
- VC学习笔记: 1. Window程序内部运行机制
- vc学习笔记之windows程序内部运行机制
- 4. Laravel5学习笔记:Facade的运行机制
- Linux内核运行机制学习笔记
- VC++学习笔记之MFC应用程序创建/执行顺序和MFC运行机制
- CSS学习笔记:三种定位机制之二浮动
- ASP.NET MVC学习笔记-MVC运行机制之源码剖析
- Ubuntu_命令运行机制学习笔记
- 孙鑫VC++视频学习笔记之1: Windows程序内部运行机制
- Python学习笔记之二 文本文件合并
- Python学习笔记之二 变量以及基本类型
- VC++孙鑫-学习笔记-第一章-Windows程序的运行机制