来自numba网站:
from numba import jit
@jit
def f(x, y):
# A somewhat trivial example
return x + y
有没有办法让numba使用python类型提示(如果提供)?
答案 0 :(得分:2)
是和否。您可以简单地使用普通的python语法进行注释(from numba import jit
@jit
def f(x: int, y: int) -> int:
# A somewhat trivial example
return x + y
>>> f.__annotations__
{'return': int, 'x': int, 'y': int}
>>> f.signatures # they are not recognized as signatures for jit
[]
装饰器将保留它们)。以您的简单示例为基础:
jit
但是要明确(强制执行)签名,必须在from numba import int_
@jit(int_(int_, int_))
def f(x: int, y: int) -> int:
# A somewhat trivial example
return x + y
>>> f.signatures
[(int32, int32)] # may be different on other machines
- 装饰者中给出:
jit
据我所知,public boolean isSameTree(TreeNode p, TreeNode q) {
if (p == q) { //Will accept null == null
return true;
}
return p != null && q != null && p.val == q.val &&
isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
}
没有自动方式来理解注释并从中构建其签名。
答案 1 :(得分:1)
由于它是Just In Time编译,您必须执行该功能以生成签名
In [119]: f(1.0,1.0)
Out[119]: 2.0
In [120]: f(1j,1)
Out[120]: (1+1j)
In [121]: f.signatures
Out[121]: [(float64, float64), (complex128, int64)]
每次上一次签名不符合数据时,都会生成一个新签名。