Python代码在执行的时候,会被编译为Python字节码,再由Python虚拟机执行Python字节码。有时候就我们执行python文件的时候会生成一个pyc文件,这个pyc文件即用于存储Python字节码指令,而这些字节码是一种类似于汇编指令的中间语言,但是每个字节码对应的不是机器指令,而是一段C代码。
而Dis模块,就是用于查看这些字节码的运行轨迹,因此我们可以用Dis模块判断两个函数的内存占用谁会更大,谁会更消耗CPU性能,不仅如此,通过指令,我们还可以知道Python中一些内置函数、变量的取值过程、运行逻辑,对于我们代码性能并优化代码很有帮助。
import dis def test1(a): if 0 < a and a < 1: return 1 return 0 def test2(a): if 0 < a < 1: return 1 return 0 dis.dis(test1) print('*'*50) dis.dis(test2)
Dis的结果其实很容易阅读:
第一列:对应的源代码行数。
第二列:对应的内存字节码的索引位置。
在第一列和第二列之间的 >> 号表示跳转的目标 第三列:内部机器代码的操作。
第四列:指令参数。
第五列:实际参数。
04-12
8873