Baz*_*Baz 5 python numpy python-3.x numba
我收到错误:
numba.core.errors.TypingError: Failed in nopython mode pipeline (step: nopython frontend)
Untyped global name 'sum_': cannot determine Numba type of <class 'function'>
Run Code Online (Sandbox Code Playgroud)
对于以下代码:
import numba as nb
from numba.pycc import CC
cc = CC('yin')
@cc.export('sum_', nb.float32(nb.float32[:]))
def sum_(a):
s = 0
for i in a:
s += i
return s
@cc.export('average', nb.float32(nb.float32[:]))
def average(a):
return sum_(a)/len(a)
cc.compile()
Run Code Online (Sandbox Code Playgroud)
我应该做什么?
我以前遇到过这个问题一次。由于某种原因,提前编译模式对类型推断没有帮助,这jit与njit编译函数不同。正如此处建议的,解决方法是添加一个额外的njit装饰器。
import numba as nb
from numba.pycc import CC
cc = CC('yin')
@nb.njit
@cc.export('sum_', nb.float32(nb.float32[:]))
def sum_(a):
s = 0
for i in a:
s += i
return s
@cc.export('average', nb.float32(nb.float32[:]))
def average(a):
return sum_(a)/len(a)
cc.compile()
Run Code Online (Sandbox Code Playgroud)