使用带有numba的python类型提示

时间:2017-02-18 02:05:49

标签: python types numba

来自numba网站:

from numba import jit

@jit
def f(x, y):
    # A somewhat trivial example
    return x + y

有没有办法让numba使用python类型提示(如果提供)?

2 个答案:

答案 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)]

每次上一次签名不符合数据时,都会生成一个新签名。