文档章节

python脚本运行机制

一依木
 一依木
发布于 2017/05/23 14:54
字数 396
阅读 21
收藏 1
点赞 0
评论 0

在说运行机制之前,先说以下四个文件各代表什么:

    .py    这个很简单是python脚本源码文件

    .pyc

          这个文件有点意思,得分几种情况来介绍:

              1、显式生成

                   python -m py_compile /path/.py

              2、隐式生成

                  2.1  a 模块 引用 自定义b模块,a模块运行后会生成b.pyc文件


python a.py

dir
|_____a.py  import b
|
|_____b.py
|
|_____b.pyc

                       

                  2.2  当源码目录包含__main__.py时,运行python 源码目录结束后,会将当前

                        目录下的所有脚本文件生成.pyc文件, 并保存于当前新文件夹__pycache__当中 。

python dir

dir
|
|___ __main__.py
|
|___ a.py
|
|___ a.pyc
|
|___ b.py
|
|___ b.pyc

        那么生成pyc文件有什么用处呢?最主要是提高模块加载速度,并实现源码隐藏及增加反编译的难度。

    .pyo

             此文件作用也是优化,相比较.pyc文件更小,加载速度更快点

            可以显示生成:

                  python -O -m py_compile /path/.py

    .pyd

           此文件是python动态链接库文件

 

简单来说python脚本运行基本步骤如下(整个过程都在虚拟机中完成):

    1、头部模块的加载及链接

    2、将源代码翻译成字节码,并将其写入内存

    3、从内存空间中读取指令并执行

    4、程序结束后,根据命令行调用情况决定是否将字节码写回硬盘当中

    5、之后若再执行该脚本,则先检查本地是否有该字节码文件,有则执行,无就重复以上步骤

 

 

© 著作权归作者所有

共有 人打赏支持
一依木
粉丝 0
博文 4
码字总数 1023
作品 0
黄浦
高级程序员
你真的了解Python吗?这篇文章让你了解90%

  【IT168 评论】人们为什么使用Python?   之所以选择Python的主要因素有以下几个方面:   软件质量:在很大程度上,Python更注重可读性、一致性和软件质量,从而与脚本语言世界中的其...

博客园 ⋅ 05/21 ⋅ 0

python中#!/usr/bin/python与#!/usr/bin/env python的区别

目的是在运行python脚本的时候告诉操作系统我们要用python解释器去运行py脚本 所以我们在第一句往往会写如下两句中的其中一句: 或 就是说在没有在执行程序时指出用什么程序运行py脚本时,系统...

p柯西 ⋅ 06/15 ⋅ 0

Sublime Text 3 配置python交互运行环境的快捷键

使用Sublime Text 3能以轻量级的环境写python脚本,运行python代码。为了更加方便地调用python脚本,通过在Sublime Text 3中绑定快捷键的方式,实现一键调用python交互运行环境,操作方式如下...

雪饼 ⋅ 06/07 ⋅ 0

不是你学不会Python,只说你的学习方法不对!那如何学习Python呢

有没有那么一个瞬间,你想放弃学习Python? 做任何事情一定有在短期内简单可行的方法。学习不应该是苦差事,而应该是快乐的,重要的是找到适合自己的学习方法。 很多人觉得自己一定能够自学好...

Python燕大侠 ⋅ 06/06 ⋅ 0

python 脚本的启动模式(python -m以模块方式启动)

今天再看python的项目时,发现GitHub中给出的python脚本的执行格式是python -m pip install somepackage。于是开始了python模式启动之旅。 其中很多相关借鉴了该博客,同时感谢博主:http://...

wonengguwozai ⋅ 05/28 ⋅ 0

Python与C#对比 python学习

Python是一种跨平台语言。无论是在Windows、Linux、Unix还是Mac Os系统,我们都可以使用Python。甚至在Linux、Unix及Mac OS系统内已经集成了Python。语法简洁优美, 简单,易学。拥有强大的标...

zhouzhou2018 ⋅ 05/23 ⋅ 0

Python是如何怼翻其他编程语言而窜上宝座的

来PK啊! 谁怕谁啊! 在过去的两年间,Python一路高歌猛进,成功窜上“最火编程语言”的宝座。 更可怕的是,这把火不仅仅是在程序员的圈子里越烧越旺,甚至还烧到了程序员的圈子外,从小学生...

超级数学建模 ⋅ 04/18 ⋅ 0

Python 3 的环境下如何正确地使用 Fabric

注:标题中「Fabric」指的是 Fabric( http://www.fabfile.org ),一个 Python 社区常用的远程/本地自动化执行工具。 讲 Fabric 之前,先讲讲我的 Python 开发环境。 很久以前,那会还在用 ...

I'm TualatriX ⋅ 05/21 ⋅ 0

命令行运行Python脚本时传入参数的三种方式

三种常用的方式 如果在运行python脚本时需要传入一些参数,例如与,可以使用如下三种方式。 python script.py 0,1,2 10 python script.py -gpus=0,1,2 --batch-size=10 python script.py -g...

yzy121403725 ⋅ 06/05 ⋅ 0

云计算Python自动化运维开发实战:行和缩进

学习Python时,遇到的第一个需要注意的地方是,不使用括号来表示代码的类和函数定义块或流程控制。代码块是由行缩进,这是严格执行表示方式。 缩进位的数目是可变的,但是在块中的所有语句必...

长沙千锋 ⋅ 05/15 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

6.1 压缩打包介绍 6.2 gzip压缩工具 6.3 bzip2压缩工具 6.4 xz压缩工具

压缩打包介绍 使用压缩工具的好处: 使用压缩文件,不仅可以节省磁盘空间,而且在传输时还能节省网络宽带。 我们通常讲的家用宽带和机房宽带100M是有区别的: 机房宽带的上行和下行都是100M,...

Linux_老吴 ⋅ 19分钟前 ⋅ 0

SpringBoot热部署加持

概述 进行SpringBoot的Web开发过程中,我们很多时候经常需要重启Web服务器才能保证修改的 源代码文件、或者一些诸如xml的配置文件、以及一些静态文件生效,这样耗时又低效。所谓的热部署指的...

CodeSheep ⋅ 25分钟前 ⋅ 0

OSChina 周六乱弹 —— 假如你被熊困到树上

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @小小编辑:推荐歌曲《如果写不出好的和弦就该在洒满阳光的钢琴前一起吃布丁》 《如果写不出好的和弦就该在洒满阳光的钢琴前一起吃布丁》- 谢...

小小编辑 ⋅ 56分钟前 ⋅ 5

vbs 取文件大小 字节

dim namedim fs, s'name = Inputbox("姓名")'msgbox(name)set fs = wscript.createobject("scripting.filesystemobject") 'fs为FSO实例if (fs.folderexists("c:\temp"))......

vga ⋅ 今天 ⋅ 1

高并发之Nginx的限流

首先Nginx的版本号有要求,最低为1.11.5 如果低于这个版本,在Nginx的配置中 upstream web_app { server 到达Ip1:端口 max_conns=10; server 到达Ip2:端口 max_conns=10; } server { listen ...

算法之名 ⋅ 今天 ⋅ 0

Spring | IOC AOP 注解 简单使用

写在前面的话 很久没更新笔记了,有人会抱怨:小冯啊,你是不是在偷懒啊,没有学习了。老哥,真的冤枉:我觉得我自己很菜,还在努力学习呢,正在学习Vue.js做管理系统呢。即便这样,我还是不...

Wenyi_Feng ⋅ 今天 ⋅ 0

博客迁移到 https://www.jianshu.com/u/aa501451a235

博客迁移到 https://www.jianshu.com/u/aa501451a235 本博客不再更新

为为02 ⋅ 今天 ⋅ 0

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部