Я хочу научиться использовать numba. К сожалению, мне сложно узнать numba из документации. Поэтому я должен попросить вас, ребята. Я хочу передать функцию f
в качестве аргумента конструктору. Однако я стараюсь, я получаю всевозможные ошибки. Что мне делать?Python: numba, как конструктор может взять функцию в качестве аргумента?
Вот мой код:.
def f(x):
# return some mathematical expression
f_numba = jit(double(double))(f)
@autojit
class name:
def __init__(self, f)
self.f = f
@double(double)
def __call__(self, x)
return self.f(x)
funct = name(f_numba)
a = funct(5)
Вот некоторые ошибки я получаю (я извиняюсь, что отступы и разрывы строк не сохраняются Я попробовал несколько разные вещи, но во всех случаях формирование теряется). Я публикую это, потому что меня просили в комментариях. Но вид ошибки я получаю зависит от точной реализации:
Traceback (most recent call last): File "/home/marius/dev/python/inf1100/test_ODE.py", line 7, in from DE import * File "/home/marius/dev/python/inf1100/DE.py", line 3, in @autojit File "/home/marius/anaconda/lib/python2.7/site-packages/numba/decorators.py", line 183, in autojit nopython=nopython, locals=locals, **kwargs)(func) File "/home/marius/anaconda/lib/python2.7/site-packages/numba/decorators.py", line 165, in _autojit_decorator numba_func = wrapper(f, compilerimpl, cache) File "/home/marius/anaconda/lib/python2.7/site-packages/numba/exttypes/autojitclass.py", line 360, in autojit_class_wrapper py_class = autojitmeta.create_unspecialized_cls(py_class, class_specializer) File "/home/marius/anaconda/lib/python2.7/site-packages/numba/exttypes/autojitmeta.py", line 22, in create_unspecialized_cls class AutojitMeta(type(py_class)): TypeError: Error when calling the metaclass bases type 'classobj' is not an acceptable base type
«Я получаю всевозможные ошибки» не очень конкретным. Как правило, если вы получаете сообщение об ошибке, лучше разместить его здесь, чтобы мы знали, с чем имеем дело. См. [SSCCE.org] (http://sscce.org/) для отличного учебника о том, как задавать большие вопросы. – mgilson
Не могли бы вы разместить фактические ошибки? – Dan