首页 > 编程语言 >【Python学习笔记】 第2章 Python如何运行程序

【Python学习笔记】 第2章 Python如何运行程序

时间:2024-09-04 23:48:06浏览次数:4  
标签:文件 解释器 字节 Python 虚拟机 程序 笔记

Python解释器简介

我们在Python的官网下载并安装Python后,它会生成一些组件,包括解释器和一套支持库。Python的代码必须在解释器中运行。

程序运行

程序员的视角

一个Python程序仅是一个包含Python语句的文本文件。例:创建script0.py文件,并写上:

print("Hello, world!")
print(2 ** 100)

然后,我们在命令行窗口,调用Python执行文件:

Python的视角

在解释器解释文件的内容时,还会做一些别的事情。

字节码编译

如果Python在机器上拥有写入权限,那么它把程序的字节码保存为一个以.pyc为扩展名的文件,这个就是字节码文件。在版本3.2之前,文件与源文件同目录;在版本3.2之后,文件在__pycache__目录中。在这个目录中还保存了编译它们的Python版本信息。

Python这么做的目的是对启动速度优化。下次运行程序时,Python先检查:

  • 源文件是否改变:检查源文件和字节码文件最后一次修改的时间戳。

  • Python的版本:是否版本不同。

然后确定是否要重新编译并生成字节码文件。大型程序中,字节码文件有助于加速启动。

Python虚拟机

Python将程序编译成字节码后,就可以发送到Python虚拟机上执行。Python虚拟机是解释器的一部分,也是解释器的最后一环。

性能的含义

Python的源代码在写好后可以立刻运行。字节码只是特定于Python的一种表现形式。Python仍然需要解释字节码,这使得Python的运行速度不如C/C++。

开发的含义

Python的编译后立刻执行的特性使得开发周期大大缩短。

执行模型的变体

Python的各种实现

CPython:标准Python

最初的、标准的Python

Jython:基于Java的Python

设计目的是与Java编程语言集成。作用是将Python源代码编译成Java字节码,使其可以运行在Java虚拟机上。

IronPython:基于.NET的Python

可以与Windows平台上的.NET框架以及与之对应的Linux开源的Mono编写成的应用相集成。

Stackless:注重并发的Python

它不会在栈上保存状态,使得Python更容易移植到较小的栈架构中。

PyPy:注重速度的Python

执行优化工具

Cython:Python和C的混合

Shed Skin:Python到C++的转换器

Psyco:原先的即时编译器

冻结二进制文件

有时候我们希望能够拥有一个把Python程序编译成二进制文件的简单方法。

实现上述想法的工具有:py2exe(Windows)、PyInstaller(Linux、Mac OS X)等等。

未来的可能性

未来也许有新的字节码格式和实现方式的变体将被采用。比如:

  • Parrot:提供多种语言通用的字节码格式、虚拟机以及优化技术。

  • Unladen Swallow:将Python提速至少5倍。

标签:文件,解释器,字节,Python,虚拟机,程序,笔记
From: https://www.cnblogs.com/hiu-siu-dou/p/18397020

相关文章

  • springboot+vue心理在线测评咨询系统【程序+论文+开题】计算机毕业设计
    系统程序文件列表开题报告内容研究背景:随着现代社会节奏的加快与竞争的日益激烈,心理健康问题日益凸显,成为影响个体生活质量和社会发展的重要因素。传统心理咨询受时间、空间限制,难以满足广大人群对心理健康服务的迫切需求。在此背景下,心理在线测评咨询系统应运而生,它利用互......
  • `springboot+vue网上竞拍系统【程序+论文+开题】计算机毕业设计
    系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展和电子商务的普及,网络购物已成为人们日常生活中不可或缺的一部分。其中,网上竞拍作为一种新颖、刺激且高效的商品交易方式,正逐渐受到广大消费者的青睐。传统的竞拍活动受限于时间和地域,而网上竞拍系统则打破了......
  • springboot+vue新冠疫苗预约系统的设计与实现【程序+论文+开题】计算机毕业设计
    系统程序文件列表开题报告内容研究背景随着全球新冠疫情的持续蔓延,疫苗作为防控疫情的关键手段,其普及与接种效率直接关系到公共卫生安全与社会经济的恢复。然而,面对庞大的接种需求,如何高效、有序地组织疫苗接种工作成为了一个亟待解决的问题。传统的疫苗接种方式往往存在信......
  • 每天五分钟深度学习:广播机制(以python语言为例)
    本文重点因为向量化的计算方式导致效率的提升,所以现在很多时候,我们都是用向量化的计算,但是向量化计算有一个问题让人头痛就是维度的问题,本节课程我们将讲解python中的广播机制,你会发现这个机制的优秀之处。代码实例importnumpyasnpa=np.random.randn(3,4)b=np.random.r......
  • 2024年 Windows Python 下载、安装教程,附详细图文
    大家好,今天为大家带来的是2024年WindowsPython下载、安装教程,附详细图文,适用于Python3所有版本,包括Python3.7,Python3.8,Python3.103.9,Python3.10等版本。希望对大家有所帮助Python目前已支持所有主流操作系统,在Linux,Unix,Mac系统上自带Python环境,一般默认装的是Py......
  • 尚硅谷前端 ES6 笔记
    ECMAScript6-11概述1.ECMA介绍ECMA(EuropeanComputerManufacturersAssociation)是欧洲计算机制造商协会,目标是评估、开发和认可电信和计算机标准。1994年后改名为Ecma国际。2.ECMAScript是什么ECMAScript是由Ecma国际通过ECMA-262标准化的脚本程序设计语言。3.......
  • 【python】本地local_setting设置与上传仓库
    1.我们在开发过程中,有的配置数据不希望别人看到,例如:数据库信息2.如是我们可以在本地配置一个local_setting.py文件2.1:在setting中最后,导入local_settingtry:from.local_settingimport*exceptImportError:pass2.2:将自己的配置数据,写入到local_setting......
  • 【Python使用】嘿马头条项目从到完整开发教程第8篇:缓存,多级缓存【附代码文档】
    本教程的知识点为:简介1.内容2.目标产品效果ToutiaoWeb虚拟机使用说明数据库理解ORM作用思考:使用ORM的方式选择数据库SQLAlchemy操作1新增2查询all()数据库分布式ID1方案选择2头条使用雪花算法(代码toutiao-backend/common/utils/snowflake)数据库Red......
  • Python基础知识-8(PyQt GUI开发,输出乱码处理)
    (目录)介绍一个VSCode轻量级RestAPI客户端插件:ThunderClient一、关于shebang明确指定解释器#!/usr/bin/python3在shell中寻找第一个python解释器#!/usr/bin/envpython3二、Python类的私有方法/属性Python不支持私有方法/属性,但可以将类成员方法/属性名定义为......
  • 同城派送小程序V1.0.9
    同城配送小程序,包含用户端、骑手端、运营后台,支持基础费、骑手配送抽佣、提现抽佣、多区域运营、财务统计,支持后台指派订单、骑手抢单模式,支持优惠券等营销功能,为跑腿团队提供技术解决方案,无加密源码,可私有化部署。V1.0.9修复一些问题【高级版】:优化:解决0元订单直接支付成功没有通......