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))