python dis模块

python中的dis模块可以查看一句python代码的cpu运行轨迹,也就是cpu指令,
如果只是读取数据时,如读取一个函数,此时数据是安全的,因为没有涉及任何修改,
当改数据时,可能会涉及数据不安全,如多个线程同时修改一个数据,原因是一句代码对应了多条cpu指令,如有4条指令,当执行完第二条时,cpu时间片轮转了,此时数据可能发生错误。

在Python3 中,会自动生成一个 __pycache__ 文件夹,.pyc 文件会在这个文件夹中

二、背后的原理

1、编译

  Python在运行过程会有一个main module,也就是包含if __name__ == '__main__'或者是直接运行的py文件

  将用户自定义的module编译成PyCodeObject对象加载到内存里,编译结束后,将其以pyc文件保存在磁盘上

 

  这个 PyCodeObject 对象包含了 Python 源代码中的字符串,常量值,以及通过语法解析后编译生成的字节码指令。

2、如何生成pyc(Python bytecode字节码文件)文件

  1、运行的时候自定义的模块会自动生成

  2、python -m compileall file_path利用Python命令手动生成

  3、利用py_compile包进行编译

  >>> import py_compile
  >>> py_compile.compile('abc.py')

3、如何反编译字节码文件

  pyc文件是二进制文件,打开以后直接查看是乱码,python提供了dis包

  dis中常用的方法:

    dis.dis([bytesource]) bytesource可以是模块,类,方法或code对象

    利用dis处理文件

待添加

posted @ 2022-09-29 16:35  寒风孤影,江湖故人  阅读(198)  评论(0编辑  收藏  举报