使用Numba的inspect_asm无输出,如何正确查看函数汇编代码?
正确查看Numba JIT函数汇编代码的方法
你当前的代码没有输出,核心原因是Numba的@njit装饰函数仅在首次被调用时才会触发JIT编译,而inspect_asm()方法只会返回已经完成编译的函数版本信息——未编译时返回的是空字典,自然遍历后没有输出内容。
修正后的代码如下:
from numba import njit @njit def add(a, b): return a + b # 先调用函数触发JIT编译,参数类型会决定编译的签名 add(1, 2) # 遍历查看所有已编译版本的汇编代码 for sig, asm_code in add.inspect_asm().items(): print(f"函数签名: {sig}") print("对应的汇编代码:") print(asm_code)
补充说明:
- 调用函数时传入的参数类型会生成对应的编译签名(比如
(int64, int64)),inspect_asm()的键就是这些签名,值是对应生成的汇编代码。 - 如果需要查看不同参数类型下的汇编,只需用不同类型的参数多调用几次函数(比如
add(1.5, 2.7)),再运行遍历代码即可。
内容的提问来源于stack exchange,提问作者gaussplustwo
相关产品推荐
相关产品推荐

