numba nopython mode“未定义变量'$313.3'”

2024-04-29 00:37:09 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我从图像构造最小树的代码(f是scipy提供的图像)

这是我写的一个接缝雕刻程序的基础。在

这个代码段与普通python中预期的一样工作。当我使用不带nopython=True@numba.jit时,它也能工作(性能提高了~200%),但这是在对象模式下。在

当我尝试使用nopython=True模式时,它不会编译,我得到错误:

Failed at nopython (nopython frontend)
Undefined variable '$313.3'

我不明白为什么这个不能编译,因为我没有看到任何可能是未定义的。在

^{pr2}$

Numba是一个非常酷的项目,即使在python对象模式下,性能的改进也给我留下了深刻的印象。在


Tags: 对象代码图像程序true代码段模式scipy
1条回答
网友
1楼 · 发布于 2024-04-29 00:37:09

异常消息具有误导性。只是只支持同构列表,所以当您试图返回[s, places]时,返回一个包含一个“integer”和一个“integers元组列表”的列表,这两个列表不再是同构的。在

请注意,这个最小的示例已经演示了该异常:

from numba import jit

@jit(nopython=True)
def test():
    places = []
    places.append((1, 2))
    places.append((2, 3))
    return [10, places]

>>> test()
...
TypingError: Failed at nopython (nopython frontend)
Undefined variable '$0.12'

只需返回一个元组:

^{pr2}$

而不是旧的

return([s, places])

即使这样编译-函数在调用函数时包含一个越界内存访问(我有一个segfault),因此您确实需要检查内存访问。在

相关问题 更多 >