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:最初始的版本

Python基础——运行机理的更多相关文章

  1. Python基础——安装运行

    Python是如何运行的? 像绝大多数编程语言一样,要在计算机上能够运行python程序,至少需要安装一个最小的Python包:一个Python解释器和支持的库. 安装Python 安装包下载:htt ...

  2. Python 基础之socket编程(二)

    Python 基础之socket编程(二) 昨天只是对socket编程做了简单的介绍,只是把socket通信的框架搭建起来,要对其中的功能进行进一步的扩充,就来看看今天的料哈! 一.基于tcp的套接字 ...

  3. SaltStack 运行机理特点

    SaltStack 运行机理特点 1.实时通讯(REAL-TIME COMMUNICATION) 所有 Salt minions 接收命令都是同时的,这意味着控制 10 个或者 10000 个系统所消 ...

  4. python之最强王者(2)——python基础语法

    背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...

  5. Python小白的发展之路之Python基础(一)

    Python基础部分1: 1.Python简介 2.Python 2 or 3,两者的主要区别 3.Python解释器 4.安装Python 5.第一个Python程序 Hello World 6.P ...

  6. Python之路3【第一篇】Python基础

    本节内容 Python简介 Python安装 第一个Python程序 编程语言的分类 Python简介 1.Python的由来 python的创始人为吉多·范罗苏姆(Guido van Rossum) ...

  7. 进击的Python【第二章】:Python基础(二)

    Python基础(二) 本章内容 数据类型 数据运算 列表与元组的基本操作 字典的基本操作 字符编码与转码 模块初探 练习:购物车程序 一.数据类型 Python有五个标准的数据类型: Numbers ...

  8. python基础之day1

    Python 简介 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. Python为我们提供了非常完善的基础代码库,覆盖了 ...

  9. Python基础1

    本节内容2016-05-30 Python介绍 发展史 Python 2 0r 3? 安装 Hello word程序 变量 用户输入 模块初识 .pyc? 数据类型初识 数据运算 if...else语 ...

随机推荐

  1. Swift编码总结1

    1. fileprivate (set) var hasSetDiscount = false中fileprivate (set)表示什么意思: //设置setter私有,但是getter为publi ...

  2. 老司机带大家领略MySQL中的乐观锁和悲观锁

    原文地址:https://cloud.tencent.com/developer/news/227982 为什么需要锁 在并发环境下,如果多个客户端访问同一条数据,此时就会产生数据不一致的问题,如何解 ...

  3. C# Hook原理及EasyHook

    C# Hook原理及EasyHook简易教程 前言 在说C# Hook之前,我们先来说说什么是Hook技术.相信大家都接触过外挂,不管是修改游戏客户端的也好,盗取密码的也罢,它们都是如何实现的呢? 实 ...

  4. .net字符串内存的分配

    几次面试中遇到都有类似的问题,就是 string str = "aa" + "bb" + "ccc";进行了几次内存分配? 1 class ...

  5. Machine Learning Glossary

    http://people.seas.harvard.edu/~mgelbart/glossary.html more at:http://www.metacademy.org/list

  6. [转帖]Docker Hub上镜像发现挖矿蠕虫病毒,已导致2000台主机感染

    Docker Hub上镜像发现挖矿蠕虫病毒,已导致2000台主机感染 https://www.kubernetes.org.cn/5951.html 本来想说可以用 official版本的镜像 但是一 ...

  7. [转帖]PCIe 6.0 v0.3版本草案已完稿:2021年转正、x16带宽飙至128GB/s

    PCIe 6.0 v0.3版本草案已完稿:2021年转正.x16带宽飙至128GB/s https://www.cnbeta.com/articles/tech/899389.htm 硬件发展突飞猛进 ...

  8. 1.http 协议和 https 协议的原理

    首先,我们得知道应用层是 OSI 七层网络模型的第七层,不同类型的网络应用有不同的通信规则,因此应用层协议是多种多样的,比如 DNS.FTP.Telnet.SMTP.HTTP. 等协议都是用于解决其各 ...

  9. 算法两数之和 python版

    方法一.暴力解法 -- 5s 复杂度分析:时间复杂度:O(n^2)空间复杂度:O(1) length = len(nums)for i in range(length):    for j in ra ...

  10. 字典的学习3——嵌套——Python编程从入门到实践

    嵌套 ? 一系列字典存储在列表or列表作为值存储在字典or字典中套字典 1. 字典列表 alien_0 = {'color': 'green', 'points': 5} alien_1 = {'co ...