Python 3.11中dis.dis函数的show_caches与adaptive参数作用解析
Python 3.11中
dis.dis新增的show_caches和adaptive参数解析 Python 3.11为dis.dis函数新增了show_caches和adaptive两个可选参数,默认值均为False。通过help(dis.dis)可查看函数签名:
>>> import dis >>> help(dis.dis) Help on function dis in module dis: dis(x=None, *, file=None, depth=None, show_caches=False, adaptive=False) Disassemble classes, methods, functions, and other compiled objects. With no argument, disassemble the last traceback. Compiled objects currently include generator objects, async generator objects, and coroutine objects, all of which store their code object in a special attribute.
参数含义
show_caches: 设为True时,会显示字节码中缓存相关的信息,比如属性访问、全局变量查找对应的缓存槽位状态。这类缓存是Python解释器为提升执行效率维护的,通常需要代码多次执行后才会填充数据。adaptive: 设为True时,会展示自适应字节码的相关细节。Python 3.11引入了自适应解释器,会根据代码执行的热点情况,将部分字节码替换为更高效的版本,该参数用于显示这些优化后的字节码内容。
测试无差异的原因
你测试的a = 1属于极简单代码片段,既没有触发缓存机制(缓存需多次执行才会生成),也没有触发自适应优化(该优化针对热点代码,需多次执行才会生效)。因此无论两个参数设为True还是False,输出的字节码内容完全一致。
若要看到参数生效的差异,可尝试:
- 编写包含多次属性访问或全局变量查找的函数,多次调用后用
show_caches=True反汇编 - 编写循环执行的热点代码,触发自适应优化后用
adaptive=True反汇编
内容的提问来源于stack exchange,提问作者user459872
相关产品推荐
相关产品推荐

