python - jitclass 与扩展 API : what can be used in a list?

标签 python numba

所以我有一段时间没有关注 numba 的开发,但我发现了很多令人兴奋的东西,例如 @jitclass 和列表支持。

所以我想尝试一下,但是如果我尝试在 nopython block 中列出我的 jitclass 结构,我会收到错误:

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 的示例进行操作, ,我没有遇到任何问题拥有间隔列表

我认为 jitclass 基本上是完成扩展 API 的冗长示例的快速方法,我错了吗?如何才能实现这一目标而无需编写这些很长且容易出错的绑定(bind)函数?

最佳答案

这并不能完全回答您的问题,但如果您想要快速解决方法,我发现与列表不同,元组似乎可以工作:

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

给出输出

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

关于python - jitclass 与扩展 API : what can be used in a list?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42364898/

相关文章:

python - AzureML 推理架构中出现 "list index out of range"错误

python - 导入错误 : cannot import name normalize

python - 如何使用 Numba 在 SciPy 中使用任意数量的变量和参数执行多重积分?

python - 具有已发布的 GIL 和复杂线程的多线程代码在 Python 中速度较慢

anaconda - Numba:找不到 cuda 库

python-3.x - 在类里面使用 numba?

python - Numpy 在新版本中将日期对象转换为 datetime64[s]

python - 在 Python 中使用 Format 时出现类型错误

python - 如何正确安排 while 函数被中断并调用另一个函数

python - 数巴 : difference between first time execution and following executions