#python #function #class #anaconda
#python #функция #класс #анаконда
Вопрос:
Я вижу отсюда: пример NumbaPro, что самый простой способ ускорить python при работе в Anaconda — просто выполнить следующее:
from numba import autojit
@autojit
def myfunction(params):
#do something
Однако у меня немного другой случай, у меня есть функция в классе, и я думаю, что, возможно, именно по этой причине я получаю эту ошибку:
class GentleBoostC:
File "C:UsersappDocumentsPython Scriptsgentleboost_c_class.py", line 64, in GentleBoostC
@autojit
File "C:UsersappAnacondalibsite-packagesnumbadecorators.py", line 183, in autojit
nopython=nopython, locals=locals, **kwargs)(func)
File "C:UsersappAnacondalibsite-packagesnumbadecorators.py", line 164, in _autojit_decorator
compilerimpl = compiler_cls(env, f, nopython, flags, template_signature)
File "C:UsersappAnacondalibsite-packagesnumbawrappingcompiler.py", line 78, in __init__
self.ast = functions._get_ast(py_func)
File "C:UsersappAnacondalibsite-packagesnumbafunctions.py", line 89, in _get_ast
ast.PyCF_ONLY_AST | flags, True)
File "C:UsersappDocumentsPython Scriptsgentleboost_c_class.py", line 1
def train(self, X, y, H):
^
IndentationError: unexpected indent
Мой код выглядит следующим образом:
from sklearn.externals.six.moves import zip
import numpy as np
import statsmodels.api as sm
import math
from skimage import data, io, filter, color, exposure
from numba import autojit
class GentleBoostC:
# some initializer functions
@autojit
def train(self, X, y, H):
# do something
Ошибка говорит, что что-то не так с отступом @autojit
строки, но это не так. Есть ли другой способ использовать его, если я работаю с классами? Я попытался добавить строку @autojit
перед определением класса, но это тоже не сработало.
Комментарии:
1. Можете ли вы проверить, что вы не смешиваете табуляции и пробелы несовместимым образом? Если вы запустите с
python -tt
, он будет кричать на вас, если вы их смешаете 🙂2. Хотя я работаю в Spyder от Anaconda. Не командная строка… как бы я использовал python -tt в Spyder?
3. Поскольку вы указали CUDA в заголовке вопроса, я предполагаю, что вы действительно хотите, чтобы NumbaPro использовал ваш графический процессор. Если это так, то вы хотите использовать
from numbapro import cuda
и@cuda.autojit
.