当前位置: 首页 > 工具软件 > pyo > 使用案例 >

python运行pyc和pyo文件_python---pyc pyo文件详解

谈灵均
2023-12-01

http://blog.csdn.net/balabalamerobert/article/details/2683029#comments

http://blog.csdn.net/zhengsenlie/article/details/30511257

http://www.cnblogs.com/txw1958/archive/2012/02/23/pyc_introduce.html

http://blog.csdn.net/I2Cbus/article/details/41383401

http://www.jianshu.com/p/03d81eb9ac9b

http://download.csdn.net/download/demonlifewnb/9408511

http://blog.csdn.net/chenggong2dm/article/category/768210

http://nedbatchelder.com/blog/200804/the_structure_of_pyc_files.html

http://www.cppblog.com/lauer3912/archive/2011/08/12/153233.aspx

https://docs.python.org/release/2.7/library/dis.html#python-bytecode-instructions

https://docs.python.org/release/2.7/library/

http://www.cnblogs.com/kym/archive/2012/05/14/2498728.html

把一个py文件编译为pyc文件了。(假设在windows环境下)

import py_compile

py_compile.compile(r'H:\game\test.py')

py_compile.compile('webmail_sina.py') # Linux环境

批量生成pyc文件

>>> import compileall

>>> compileall.compile_dir(r'/home/codemo/Desktop/python')

python -O -m py_compile test.py   生成 test.pyo

python  -m py_compile test.py      生成test.pyc

pyc文件,是Python编译后的字节码(bytecode)文件。只要你运行了py文件,python编译器就会自动生成一个对应的pyc字节码文件。

这个pyc字节码文件,经过python解释器,会生成机器码运行(这也是为什么pyc文件可以跨平台部署,类似于Java的跨平台,java中JVM运行的字节码文件)

。下次调用直接调用pyc,而不调用py文件。直到你这个py文件有改变。python解释器会检查pyc文件中的生成时间,对比py文件的修改时间,如果py更新,那么就生成新的pyc。

pyo文件,是python编译优化后的字节码文件。pyo文件在大小上,一般小于等于pyc文件。

python文档是这样描述的:这个优化没有多大作用,只是移除了断言。

原文如下:

When the Python interpreter is invoked with the -O flag, optimized code is generated and stored in .pyo files.

The optimizer currently doesn’t help much; it only removes assert statements.

When -O is used, all bytecode is optimized;

.pyc files are ignored and .py files are compiled to optimized bytecode.

至于速度,运行几乎一样,加载pyc和pyo稍占优势。python文档是这样说的:

A program doesn’t run any faster when it is read from a .pyc or .pyo file than when it is read from a .py file;

the only thing that’s faster about .pyc or .pyo files is the speed with which they are loaded.

SUBLIME TEXT 2 设置文件详解

SUBLIME TEXT 2 设置文件详解 Preferences.sublime-settings文件: // While you can edit this file, it’s best to ...

python之OS模块详解

python之OS模块详解 ^_^,步入第二个模块世界----->OS 常见函数列表 os.sep:取代操作系统特定的路径分隔符 os.name:指示你正在使用的工作平台.比如对于Windows ...

Python模块调用方式详解

Python模块调用方式详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其 ...

Python对Excel操作详解

Python对Excel操作详解 文档摘要: 本文档主要介绍如何通过python对office excel进行读写操作,使用了xlrd.xlwt和xlutils模块.另外还演示了如何通过Tcl   ...

Python的logging模块详解

Python的logging模块详解 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.日志级别 日志级别指的是产生的日志的事件的严重程度. 设置一个级别后,严重程度 ...

Python初学者常见错误详解

Python初学者常见错误详解 0.忘记写冒号 在 if.elif.else.for.while.class.def 语句后面忘记添加 “:”   if spam == 42 print('Hello ...

python的requests用法详解

Requests是一个Python语言写的http相关设置或者请求的一个库 安装:pip install Requests或者pip3 install requests 使用的时候要import re ...

python基础之函数详解

Python基础之函数详解 目录 Python基础之函数详解 一.函数的定义 二.函数的调用 三.函数返回值 四.函数的参数 4.1 位置参数 4.2 关键字参数 实参:位置实参和关键字参数的混合使用 ...

python之sys模块详解

python之sys模块详解 sys模块功能多,我们这里介绍一些比较实用的功能,相信你会喜欢的,和我一起走进python的模块吧! sys模块的常见函数列表 sys.argv: 实现从程序外部向程序传 ...

随机推荐

windows server 开机自动登录并锁定

这个操作对于广大使用Windows(包括xp/win7/2003/2008 R2 等windows 系统) 的上班族会有点用. 其一:如果是个人吧系统(win7.xp)上班时候打开电脑,自动登录,系统 ...

VS2013 修改TFS的本地映射路径

在源代码管理器里面 找到你的本地工作区 然后点击编辑按钮 修改本地目录

linux 查看系统版本

博客分类: linux LinuxRedHatDebianSuSE  几种查看linux版本信息的方法: uname -a cat /proc/version cat /etc/issue lsb_r ...

NOIP2014提高组 DAY1 -SilverN

T1  生活大爆炸版石头剪刀布 题目描述 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头.如果两个人出拳一样,则不分胜负.在第二季第8 集中出现了一种石头剪刀布的 ...

PHP中使用mysql处理结果集

一.从结果集中将记录取出    mysql_fetch_row($result); 从结果集中取得一行作为枚举数组 mysql_fetch_row($result mysql_fetch_assoc( ...

tc srm 636 div2 500

100的数据直接暴力就行,想多了... ac的代码: #include #include #include

java之泛型潜在错误

如果使用带泛型声明的类时,没有传入类型参数,那么这个类型参数默认是声明该参数时指定的第一个上限类型,这个类型参数被称为raw type(原始类型 ). eg:     public class Lis ...

lua 怎样输出树状结构的table?

为了让游戏前端数据输出更加条理,做了一个简单树状结构来打印数据. ccmlog.lua local function __tostring(value, indent, vmap) local str ...

VUE 组件通信、传值

一.通过路由进行带参传值: 两个组件A和B,A组件通过query把orderId传递给B组件(触发事件可以是点击事件.钩子函数等) this.$router.push({path:'/componen ...

 类似资料: