2013-12-20 3 views
0

Я хочу научиться использовать 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

+4

«Я получаю всевозможные ошибки» не очень конкретным. Как правило, если вы получаете сообщение об ошибке, лучше разместить его здесь, чтобы мы знали, с чем имеем дело. См. [SSCCE.org] (http://sscce.org/) для отличного учебника о том, как задавать большие вопросы. – mgilson

+1

Не могли бы вы разместить фактические ошибки? – Dan

ответ

2

Похоже, вы должны использовать new-style class вместо этого.

@autojit 
class name(object): 
Смежные вопросы