2017-02-18 24 views

ответ

1

Да и нет. Вы можете просто использовать стандартный синтаксис 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 -decorator:

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 понимать аннотации и строить свою подпись из них.

1

Поскольку это как раз во время компиляции, необходимо выполнить функцию для создания подписей

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

Новая подпись генерируется каждый раз, когда предыдущий не соответствует данным.

 Смежные вопросы

  • Нет связанных вопросов^_^