试图找出如何在使用jitclass时跳过一个类方法。Numba,Jitclass w/nopython模式和字典
有一个非常大的递归模型(非常多,一个巨大的for循环),其中 - 给定路径相关的计算,不能用直Numpy矢量化。
类贯穿一系列numpy的阵列,通常numba友好的语法,但我有一个部分中调用了几个以有序的方式方法:
def operations(self, i, ops_order_config):
ops_dict = self.ops_dict
for index in range(len(waterfall_config)):
try:
if isinstance(ops_config[index], tuple):
ops_dict[ops_config[index][0]](i, ops_config[index][1])
else:
ops_dict[ops_config[index]](i)
except KeyError:
pass
该模型的一部分对于灵活性非常重要 - “config”是包含适当调用方法的元组的有序列表,以及相应的参数。 ops_dict拥有实际的自我。这是从配置调用,具有适当的参数。
如果我正在创建一个jitclass,有没有什么办法可以跳过这个字典方面?
谢谢。当jitclass被使用并工作时,nopython模式被应用是否是一个安全的假设? – user7038639
@ user7038639是的。该类的所有方法都将以nopython模式编译。 [docs](http://numba.pydata.org/numba-doc/dev/user/jitclass.html)明确提到它:“jitclass的所有方法都被编译成nopython函数.jitclass实例的数据是在堆上分配为C兼容结构,以便任何编译函数都可以直接访问底层数据,绕过解释器。“ :) – MSeifert
布拉,通过这些文档10次,似乎错过了。谢谢! – user7038639