python - Numba - 来自jited函数内部的参数(numpy数组)的内存地址
问题描述
我试图检查是否numba
通过值或引用传递参数,所以我写了这个:
@numba.jit(nopython=True)
def f(x):
return id(x)
运行时,结果如下:
TypingError: cannot determine Numba type of <class 'builtin_function_or_method'>
这完全有道理(我知道id
不一定是内存地址,但这就是我的想法)。然而:
如何在 jited 函数中获取参数的内存地址?
numba 是按值还是按引用传递参数(以及如何验证这一点)?
解决方案
就对 的调用而言id
,您只能使用以下所列的 Python 功能:
http://numba.pydata.org/numba-doc/latest/reference/pysupported.html
我的理解是 numba 遵循 python 的按引用传递与按值传递的约定(尽管实际上并不完全正确)。它更像是按对象调用。像标量这样的不可变对象就像按值传递一样。列表和数组等可变对象的行为类似于引用。
确认这一点的最简单方法是尝试传入不同参数类型的变量,在函数内修改它们,并查看它们在函数调用后是否发生变化。
推荐阅读
- c - Arduino 卡住和 serial.println 输出集结在一起
- php - 如何编写 Gmail 重定向 URL?
- postgresql - PostgreSQL 用户对 Apache Zeppelin 用户的权限
- html - 如何隐藏:通过悬停在子项上的父项内容之前?
- spring-boot - rabbitmq中的异步ack
- android - 谷歌地图方向api中位置(0.0,0.0)的标记
- c# - 当事件发生在 WPF 的窗口 2 中时如何更新窗口 1 的视图
- webpack - 在 MVC 5 项目中添加 Vue.js
- vba - VBA数据透视表数据源错误
- angular - Angular DataService 无法解析参数