2017-02-18 6 views
3

Von der numba Webseite:mit Python Typ Hinweise mit Numba

from numba import jit 

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

Gibt es eine Möglichkeit Numba Verwendung Python Typen Hinweise zu haben (falls vorhanden)?

Antwort

1

Ja und nein. Sie können einfach die normale Python-Syntax für Anmerkungen verwenden (der Dekorator jit behält sie bei). Aufbauend auf Ihrem einfaches Beispiel:

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

jedoch explizit (erzwingen) die Unterschrift muss es in dem jit -decorator gegeben werden:

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 

Es ist so weit, wie ich weiß, keine automatische Art und Weise für jit die Anmerkungen verstehen und daraus ihre Signatur erstellen.

1

Da es Just In Time Compilation ist, müssen Sie die Funktion ausführen, um die Signaturen

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

Eine neue Signatur erzeugt wird jedes Mal zu erzeugen, die vorherige passen die Daten nicht.

Verwandte Themen