jitclass vs extension API:列表中可以使用什么?
jitclass vs extension API : what can be used in a list?
所以我有一段时间没有关注 numba
的发展,但我发现了很多令人兴奋的事情,比如 @jitclass
和列表支持。
所以我想尝试一下,但是如果我尝试在 nopython
块中列出我的 jitclass
结构,我会收到错误消息:
reflected list(instance.jitclass.Interval#42f9788<lo:float64,hi:float64>): unsupported nested memory-managed object
用简单的下面class
@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 的冗长示例,我错了吗?如何在不必编写这些容易出错的长绑定函数的情况下实现它?
这并没有完全回答您的问题,但如果您想快速解决问题,我发现与列表不同,元组似乎有效:
f((Interval(1,2),)*10)
给出输出
(<numba.jitclass.boxing.Interval at 0x10d8d0d50>,
<numba.jitclass.boxing.Interval at 0x10d8d0d70>,
[... clipped ...]
<numba.jitclass.boxing.Interval at 0x10d8d0e90>)
这实际上是在 Numba 0.39 中添加的 (http://numba.pydata.org/numba-doc/0.39.0/release-notes.html#version-0-39-0)
List has gained support for containing reference-counted types like NumPy arrays and list. Note, list still cannot hold heterogeneous types.
所以现在直接wok了。
所以我有一段时间没有关注 numba
的发展,但我发现了很多令人兴奋的事情,比如 @jitclass
和列表支持。
所以我想尝试一下,但是如果我尝试在 nopython
块中列出我的 jitclass
结构,我会收到错误消息:
reflected list(instance.jitclass.Interval#42f9788<lo:float64,hi:float64>): unsupported nested memory-managed object
用简单的下面class
@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 的冗长示例,我错了吗?如何在不必编写这些容易出错的长绑定函数的情况下实现它?
这并没有完全回答您的问题,但如果您想快速解决问题,我发现与列表不同,元组似乎有效:
f((Interval(1,2),)*10)
给出输出
(<numba.jitclass.boxing.Interval at 0x10d8d0d50>,
<numba.jitclass.boxing.Interval at 0x10d8d0d70>,
[... clipped ...]
<numba.jitclass.boxing.Interval at 0x10d8d0e90>)
这实际上是在 Numba 0.39 中添加的 (http://numba.pydata.org/numba-doc/0.39.0/release-notes.html#version-0-39-0)
List has gained support for containing reference-counted types like NumPy arrays and list. Note, list still cannot hold heterogeneous types.
所以现在直接wok了。