как обращаться с декоратором, который не существует - PullRequest
2 голосов
/ 14 мая 2019

Я бы хотел импортировать jit для ускорения моего кода, но как мне исправить ошибку в numba, не установленную на некоторых компьютерах?Скажем в коде ниже:

from numba import jit

@jit
def some_function(x):
    ....#some more code

сейчас, some_function будет работать нормально даже без применения декоратора, но чуть медленнее.Таким образом, я мог бы сделать попытку, кроме как:

try:
    from numba import jit
except:
   pass

, но как мне обработать эту часть кода?

@ jit <----- def some_function (x):.... # еще немного кода </p>

Возможно, я мог бы сделать что-то вроде двух функций:

try:
    @jit <----
    def some_function(x):
    ...
except:
    def some_function(x):
    ...

, даже если бы это работало, кажется, что дублировать код нехорошо.какое решение для этого?Как сделать так, чтобы декоратор как-то исчезал / не работал, если произошла ошибка импорта?

1 Ответ

5 голосов
/ 14 мая 2019

Вы можете просто return function, как,

try:
    from numba import jit
except ImportError as err:
    jit = lambda x: x # return the function itself
...