从jitted函数内部指定参数(numpy数组)的内存地址

2024-04-18 00:38:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图检查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是按值传递参数还是按引用传递参数(我如何验证这一点)?


Tags: ofidtrue参数returndeftypejit
1条回答
网友
1楼 · 发布于 2024-04-18 00:38:48

关于对id的调用,您只能使用中列出的python功能:

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

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

确认这一点最简单的方法就是尝试传入不同参数类型的变量,在函数中修改它们,并查看它们在调用函数后是否发生更改。你知道吗

相关问题 更多 >

    热门问题