在 numba 中使用 python 类型提示

Using python type hints with numba

来自 numba 网站:

from numba import jit

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

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

是也不是。您可以简单地使用正常的 python 语法进行注释(jit 装饰器将保留它们)。基于您的简单示例:

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 没有自动的方法来理解注释并从中构建签名。

由于是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)]

每当以前的签名不适合数据时,都会生成一个新签名。