Numba - 无法确定 <class 'builtin_function_or_method'> 的 Numba 类型
Numba - cannot determine Numba type of <class 'builtin_function_or_method'>
我找不到如何执行此操作。考虑这个字典:
this_size = numba.typed.Dict.empty(key_type=numba.types.float64, value_type=numba.types.float64)
我在 @numba.jit(nopython = True)
。我试着总结这个字典的价值。但我得到:
TypingError: Failed in nopython mode pipeline (step: nopython frontend)
Untyped global name 'sum': cannot determine Numba type of <class 'builtin_function_or_method'>
File "trial.py", line 163:
def strat_1(bid_price, ask_price, deal_size, deal_price, posture, post_update, is_out, num_ticks, tick_size, point_value):
<source elided>
BBB[i] = sum(this_size.values())
编辑: sum
现在从 Numba 版本 0.54 开始支持! (release notes, PR)
看起来 sum
不在 supported built-in functions 的列表中(从 Numba 版本 0.51.2 开始)。现在,Numba 支持不断增长但仍然相当有限的 vanilla Python 和 NumPy 子集。
Numba 确实支持 np.sum
,尽管我无法说服它采用您字典的值(它可能需要更多的修补)。我让它编译的唯一方法是回退一个普通的 for 循环:
import numba
import numpy as np
this_size = numba.typed.Dict.empty(key_type=numba.types.float64, value_type=numba.types.float64)
@numba.njit
def my_sum(d):
total = 0.0
for val in d.values():
total += val
return total
print(my_sum(this_size))
我找不到如何执行此操作。考虑这个字典:
this_size = numba.typed.Dict.empty(key_type=numba.types.float64, value_type=numba.types.float64)
我在 @numba.jit(nopython = True)
。我试着总结这个字典的价值。但我得到:
TypingError: Failed in nopython mode pipeline (step: nopython frontend)
Untyped global name 'sum': cannot determine Numba type of <class 'builtin_function_or_method'>
File "trial.py", line 163:
def strat_1(bid_price, ask_price, deal_size, deal_price, posture, post_update, is_out, num_ticks, tick_size, point_value):
<source elided>
BBB[i] = sum(this_size.values())
编辑: sum
现在从 Numba 版本 0.54 开始支持! (release notes, PR)
看起来 sum
不在 supported built-in functions 的列表中(从 Numba 版本 0.51.2 开始)。现在,Numba 支持不断增长但仍然相当有限的 vanilla Python 和 NumPy 子集。
Numba 确实支持 np.sum
,尽管我无法说服它采用您字典的值(它可能需要更多的修补)。我让它编译的唯一方法是回退一个普通的 for 循环:
import numba
import numpy as np
this_size = numba.typed.Dict.empty(key_type=numba.types.float64, value_type=numba.types.float64)
@numba.njit
def my_sum(d):
total = 0.0
for val in d.values():
total += val
return total
print(my_sum(this_size))