Python:numba,构造函数如何将函数作为参数?

时间:2013-12-20 19:10:48

标签: python numba

我想学习使用numba。不幸的是,我发现从文档中学习numba有点困难。所以我必须试着问你们。我想将函数f作为参数传递给构造函数。但是我试试,我得到各种各样的错误。我该怎么办?

这是我的代码:

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(最近一次调用最后一次):文件   “/home/marius/dev/python/inf1100/test_ODE.py”,第7行,在        来自DE import *文件“/home/marius/dev/python/inf1100/DE.py”,第3行,在       @autojit文件“/home/marius/anaconda/lib/python2.7/site-packages/numba/decorators.py”,   第183行,在autojit中       nopython = nopython,locals = locals,** kwargs)(func)文件“/home/marius/anaconda/lib/python2.7/site-packages/numba/decorators.py”,   第165行,在_autojit_decorator中       numba_func = wrapper(f,compilerimpl,cache)文件“/home/marius/anaconda/lib/python2.7/site-packages/numba/exttypes/autojitclass.py”,   第360行,在autojit_class_wrapper中       py_class = autojitmeta.create_unspecialized_cls(py_class,class_specializer)文件   “/home/marius/anaconda/lib/python2.7/site-packages/numba/exttypes/autojitmeta.py”   第22行,在create_unspecialized_cls中       class AutojitMeta(type(py_class)):TypeError:调用元类库时出错       类型'classobj'不是可接受的基类型

1 个答案:

答案 0 :(得分:2)

听起来你应该使用new-style class代替。

@autojit
class name(object):