zoukankan      html  css  js  c++  java
  • Python基础——运行机理

    Python解释器

    从Python这门编程语言的实现上来讲,Python是一个名为解释器的软件包,包含:一个解释器 和 支持的库

    解释器又有不同版本:CPython、Jython、IronPython

    理解Python的运行机理需要从程序员 以及 解释器两个角度出发,见下图

    编译:

    这里说的编译不同于C/C++下面的编译,那个涉及到4个过程。参考:编译 

    python的编译只是简单的翻译,把.py源码翻译成字节码。

    字节码:

    字节码是源代码底层的,与平台无关的表现形式。

    之前了解过python底层的人,可能很直观认为字节码就是.pyc,这只是字节码的一种。字节码到底是什么取决于解释器的版本。

    对于CPython他的字节码就是.pyc,然后字节码发送给(PVM,Python Virtual Machine )Python虚拟机。

    对于Jython,.py源码编译成Java字节码,然后发送给Java虚拟机(JVM)

    PVM:

    对于CPython来说是PVM

    对于Jython来说是JVM

    不管是那种虚拟机,其本质就是一个迭代运行字节码指令的一个大循环。

    冻结二进制文件

    程序员接触的是python源码,源码需要运行在解释器下。但是对于用户,他是不会搭建这种运行环境的,他只需要傻瓜式操作,直接安装,安装完毕后能运行就万事大吉。

    因此,一个Python项目,将源码发给个客户是不现实的。这时候就是冻结二进制文件发挥作用的时候了

    冻结二进制文件本质上是将程序字节码,PVM(解释器)以及其他支持库捆绑成一个单独的文件包,这个文件包是一个单独的可执行的二进制程序。这个文件包可以很方便的发给客户,即使客户电脑上没有安装python。客户拿到文件包可以直接安装,根本感觉不出来这是用什么语言写的。

    生成冻结二至文件的工具

    py2exe:Windows下使用

    PyInstaller:Linux及UNIX上使用,能够生成自安装的二进制文件

    freeze:最初始的版本

     

     

     

  • 相关阅读:
    CentOS安装部署Nodejs
    CentOS安装部署Git
    CentOS安装部署Mysql 5.7
    CentOS 7 安装Java环境(脚本一键式安装)
    Java技术 | 细谈Java中UUID的简单了解与使用
    Navicat Premium 版本 12.1 激活成永久
    Java技术 | 细谈 Java 8 中的 Base64
    安装部署Elastic Search
    从零开始搭建linux下laravel 5.5所需环境(二)
    从零开始搭建linux下laravel 5.5所需环境(一)
  • 原文地址:https://www.cnblogs.com/kelamoyujuzhen/p/9644104.html
Copyright © 2011-2022 走看看