注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

那些星星点点的微芒,终会成为燃烧生命的熊熊之光

 
 
 
 
 

日志

 
 

python基础 - 内存调用及pyc和pyo之别  

2013-11-24 23:04:32|  分类: 学习在路上 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
内存的调用
在内存数据存储这块儿,python与其他语言相反。数据都存在内存当中,每次使用都等于一次引用。
可通过id(xx)来查看变量在内存中的地址(一条数据在内存空间当中可存在于多个标签中)。来说明下这个问题,直接看图直观
python基础 - 内存调用及pyc和pyo之别 - ------ - 水墨


pyc文件
pyc是一种二进制文件,是由py文件经过编译后生成的文件,是一种byte code,py文件变成pyc文件后,加载的速度有所提高。而且pyc是一种跨平台的字节码,是由python的虚拟机来执行的,这个是类似于JAVA或者.NET的虚拟机的概念。pyc的内容,是跟python的版本相关的,不同版本编译后的pyc文件是不同的,2.5编译的pyc文件,2.4版本的 python是无法执行的。

如何编译

如该文件名为test2.py,code如下:


import py_compile //调用compile函数
py_compile.compile('test1.py') //对当前目录下test1进行编译

----------------------

这里简单说下compile函数,如

py_compile.compile(r'e:\code\test.py') //对指定路径下code做编译。当前,所生成的pyc文件也在指定路径下


批量编译

可这样

import compileall
compileall.compile_dir(r'e:\code')   

也可这样

# python -m compileall e:/code/

python基础 - 内存调用及pyc和pyo之别 - ------ - 水墨

咱们来打开pyc文件看一下

python基础 - 内存调用及pyc和pyo之别 - ------ - 水墨

 从图中就能看出pyc文件的作用,相当于"代码混淆",预防了源码泄露的问题。说到这,因为职业病的问题。心想这肯定能反编译的吧?百度之,结果是可以的。不过好像有门槛,每个python版本所编译的pyc文件得用相应版本的depython工具才行。我这也是刚学简单提一下,求大牛指导。


pyo文件
pyo是优化编译后的程序,可提高加载速度。对嵌入式系统,把需要的模块编译成pyo文件可以减少容量。

如何编译

python -O -m filename (注意大小写,这里就不上图了)


相关命令解释 python -h 即可。

  评论这张
 
阅读(116)| 评论(0)
推荐

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017