zoukankan      html  css  js  c++  java
  • Python如何运行程序

    人生苦短,我用Python。

    作为一个开发人员,如何写代码是必须要知道的,代码如何运行也是有必要了解的。通过了解代码如何运行,可指导我们写出效率更高的代码。下午看了《Python学习手册》第二章,了解了一些比较有趣的东西,因此做个总结。

    let's do it

    Python解释器

    提到Python印象大多是编程语言。其实Python是一个名为解释器的软件包,通俗一点解释器就是将你的代码解释给计算机。

    官方点,解释器是代码与机器的计算机硬件之间的软件逻辑层。

    当安装Python后,他会生成一些组件:至少包括一个解释器和一套支持库。

    根据使用情况不同,解释器可能采取可执行程序的形式,或做为链接到另一个程序的库

    根据版本不同,解释器本身可以用 C程序实现,或一些Java类实现。

    无论如何Python代码必须在解释器上运行

      程序执行

       惯例,Python文件都是以.py结尾, 但是从技术上来讲,这种命名方案在被“导入”时才是必须的。

    当Python运行脚本时,在代码运行前还要做一些工作。

    1. 将源码编译成字节码(不是机器码)
    2. 将编译的字节码放到Python虚拟机(PVM)中运行

    字节码编译

    编译是一种简单的翻译步骤,字节码是一种低级的,与平台无关的表现形式(可移植性)这些字节码可以提高执行速度,比源码快得多。

    如果Python进程有写入权限,那么他会把字节码保存为一个.pyc为扩展名的文件,3.2之后版本将其放在__pycache__的子目录中,方便下次PVM跳过编译直接取用,没有写入权限的话运行程序还是会翻译成字节码,只不过放内存,程序杀死之后就被丢弃。

    Python会检测源文件是否改变,没变就直接用上次的.pyc。

    对于Python版本,.pyc的文件名中包含版本,因此可区别不同版本编译的.pyc

    .pyc文件起到加速启动的作用,类似于操作系统的缓存,只不过是执行了一部分再缓存。

    Python虚拟机(PVM)

    PVM用来执行字节码文件。 但实际上它不是一个独立的程序,不用安装,

    本质其实就是一个迭代执行字节码指令的大循环,一步步的完成操作。期间会将字节码编译成二进制码。

    因此,最终的效果是纯Python代码执行速度介于传统编译语言和传统解释性语言之间(cache的作用)

    对开发的意义:编译和执行的的环境是同一个,。因此编译器总在运行时出现,这就使Python程序在运行时去构建和执行另一个Python程序成为可能


     执行模型的变体

    除了传统的实现模式,Python还有很多实现,简单说一下

    • CPython:标准Python  

    由可移植的ANSI C语言代码编写而成,一般来说用的都是这个

    特点:运行速度最快、最完整、最新、最健全。上面的图便是CPython的运行时体系结构。

    • Jython:基于Java的Python

    与Java进行集成

    • IronPython:基于.Net的Python
    • Stackless:注重并发的Python
    • PyPy:注重速度的Python        比较有潜力,特别是在CPU密集型代码,计算领域(AI)

    随着Python的持续升温,相信以后更加高效的执行模型会出来。


       

     冻结二进制文件

    最后记录下这个,就是生成的可执行文件(独立的二进制可执行), 有种打包发布的意思

    有许多系统可以生成随平台特性变化的冻结二进制文件

    冻结二进制文件其实就是将字节码和PVM混合在一起形成的一个独立组件。由于代码嵌入在冻结二进制文件中,对于接收者来说,代码是看不见的。

    这样便实现的单文件的封装,终端用户都不用安装Python就可以运行这些程序。

     
     如何运行大概知道了。
     学习尚浅,有错误或不当之处还请指正。
  • 相关阅读:
    深入Android 【一】 —— 序及开篇
    Android中ContentProvider和ContentResolver使用入门
    深入Android 【六】 —— 界面构造
    The service cannot be activated because it does not support ASP.NET compatibility. ASP.NET compatibility is enabled for this application. Turn off ASP.NET compatibility mode in the web.config or add the AspNetCompatibilityRequirements attribute to the ser
    Dynamic Business代码片段总结
    对文件的BuildAction以content,resource两种方式的读取
    paraview 3.12.0 windows下编译成功 小记
    百度网盘PanDownload使用Aria2满速下载
    netdata的安装与使用
    用PS给证件照排版教程
  • 原文地址:https://www.cnblogs.com/hao11/p/11711009.html
Copyright © 2011-2022 走看看