2017-02-21 24 views
1

Так что я не последовал за numba событиями на некоторое время, и я обнаружил много интересных вещей, таких как @jitclass и поддержку списка.jitclass vs extension API: что можно использовать в списке?

Так что я хотел бы попробовать это, но если я пытаюсь получить список моей jitclass структуры в nopython блоке я получаю ошибку:

reflected list(instance.jitclass.Interval#42f9788<lo:float64,hi:float64>): unsupported nested memory-managed object 

С простого следующего классом

@jitclass([('lo', types.float64), ('hi', types.float64)]) 
class Interval(object): 
    def __init__(self, lo, hi): 
     self.lo = lo 
     self.hi = hi 

    @property 
    def width(self): 
     return self.hi - self.lo 

И самый простой соответствующий код:

@jit(nopython=True) 
def f(my_list): 
    return my_list 

f([Interval(1,2)]*10) 

Однако, если я следую примеру использования расширенного API расширения here, У меня нет проблем со списком Interval.

Я думал, что jitclass был в основном быстрым способом делать то, что делает длинный пример API расширения, я ошибаюсь? Как можно достичь этого, не записывая эти длинные функции привязки к ошибкам?

ответ

2

Это не полностью ответить на ваш вопрос, но если вы хотите быструю работу вокруг, я обнаружил, что в отличие от списков, кортежей, кажется, работают:

f((Interval(1,2),)*10) 

дает выходной сигнал

(<numba.jitclass.boxing.Interval at 0x10d8d0d50>, 
<numba.jitclass.boxing.Interval at 0x10d8d0d70>, 
[... clipped ...] 
<numba.jitclass.boxing.Interval at 0x10d8d0e90>) 
+0

Хорошо знать. Благодаря! – Evariste

 Смежные вопросы

  • Нет связанных вопросов^_^