说说python程序的执行过程_python程序是如何运行的?

python程序是如何运行的?解释器:让其他程序运行起来的程序,是代码与机器的计算机硬件之间的软件逻辑层。Python也是一个名为解释器的软件包。

python程序在解释器上执行分两个过程:

编译:如果Python进程在机器上拥有写入权限,那么它将把程序的字节码保存为一个以.pyc为扩展名的文件。当程序运行后,你会在那些源代码的附件(也就是说同一个目录下)看到这些文件。Python这样保存字节码是作为一种启动速度的优化。下一次运行程序时,如果你在上次保存字节码之后没有修改过源码的话,Python将会加载.pyc文件并跳过编译这个步骤。当Python必须重新编译时,它会自动检查源文件和字节码文件的时间戳:如果你又保存了源代码,下次程序运行时,字节码将自动重新创建。

执行:当程序编译成字节码,之后的字节码发送到通常称为Python虚拟机(Python Virtual Machine,简写为PVM)上来执行。它不是一个独立的程序,不需要安装。PVM是Python的运行引擎,它时常表现为Python系统的一部分,并且是实际运行脚本的组件。从技术上来讲,它才是Python解释器的最后一步。(事实上,PVM就是迭代运行字节码指令的一个大循环,一个接一个的完成操作)。

tips:Python字节码不是机器的二进制码(例如,Intel芯片的指令)。字节码是特定于Python的一种表现形式。这就是Python代码无法运行得像C或C++代码一样快的原因。PVM循环仍然需要解释字节码。并且字节码指令与CPU指令相比需要更多的工作。

解释器位于操作系统什么位置(Linux/Unix)?

执行Python程序的解释器类型系统都有哪些?python语言的三种主要实现方式。最快最完整最健全。CPython:标准的实现。

Jython:目的是为了与Java语言集成。Jython包含了Java类,这些类编译Python源代码、形成Java字节码,并将得到的字节码映射到Java虚拟机(JVM)上。

IcronPython:它替换了图2-2中最后的两个方框,将其换成.NET环境的等效执行方式。并且就像Jython一样,IcronPython有特定的目标:主要为了在.NET组件中集成Python的开发者。

Cython:(基于Pyrex项目所完成的工作)是一种混合的语言,它为Python代码结合了调用C函数以及使用变量、参数和类属性的C类型声明的能力。

Stackless Python:标准CPython实现的一个变体,不会在C语言调用栈上保存状态。这使得Python更容易移植到较小的栈架构中。

优化Python程序执行效率的工具?

Psyco:是一个PVM的增强工具,这个工具收集并使用信息,在程序运行时,可以将部分程序的字节码转换成底层的真正的二进制机器代码,从而实现更快的执行速度。在理想的情况下,一些通过Pysco优化的Python代码的执行速度可以像编译好的C代码一样快。所有Pysco往往被看做是一个即时编译器(JIT)。

Shedskin C++转换器:Shedskin是一个引擎系统,它尝试将Python代码变为C++代码,然后使用机器中的C++编译器将得到的C++代码编译为机器代码。

Python程序是如何分发打包的?冻结二进制文件:能够将程序的字节码、PVM(解释器)以及任何程序所需要的Python支持文件捆绑在一起形成一个单独的文件包。实际的结果是一个单独的可执行的二进制程序(例如,Windows系统中的.exe文件),这个程序可以很容易地向客户分发。这就好像将字节码和PVM混合在一起形成一个独立的组件。

主要有三种系统能够生成冻结二进制文件:windows:py2exe

Linux/Unix:PyInstaller,freeze

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值