Numba-来自Jitted函数内部参数(numpy数组)的内存地址

时间:2018-08-23 14:38:37

标签: python numba

我试图检查numba是通过值传递还是通过引用传递参数,所以我这样写:

@numba.jit(nopython=True)
def f(x):
    return id(x)

运行时会导致以下结果:

TypingError: cannot determine Numba type of <class 'builtin_function_or_method'>

这完全是有道理的(我知道id不一定是内存地址,但这就是我的想法)。但是:

  1. 如何获取jitted函数中参数的内存地址?

  2. numba是否通过值或引用传递参数(以及如何验证这一点)?

1 个答案:

答案 0 :(得分:2)

就对id的调用而言,您只能使用以下所列的python功能:

http://numba.pydata.org/numba-doc/latest/reference/pysupported.html

我的理解是numba遵循python的传递引用与传递值的约定(尽管实际上两者都不完全相同)。它更像是按对象调用。标量之类的不可变对象的行为就像它们通过值传递一样。列表和数组之类的可变对象的行为类似于引用。

最简单的确认方法是尝试传入不同参数类型的变量,在函数中对其进行修改,然后查看它们是否在调用函数后更改。