一方面,我有一个文件foo.py
,其中包含许多njit
装饰的功能,例如func1(args1)
,func2(args2)
,... funcN(argsN)
;另一方面,我有一个文件mainfoo.py
,将在其中运行装饰有njit
的函数main()
。
mainfoo.py
看起来像这样
import foo
from numba import njit
@njit
def main():
x1= foo.func1(args1)
x2= foo.func2(args2)
x3= foo.func3(args3)
...
xN= foo.funcN(argsN)
some_interactions_between_intermediate_arrays()
boolean_indexing()
more_fancy_indexing()
if __name__ == '__main__':
main()
据我所知,python会引发一个异常,该异常表示“在njitted函数main()
内,您无法进行调用该函数以外的其他njitted函数的函数调用” main()
”
我知道一种解决方案是手动重新定义main()
内的所有njitted函数(通过重新定义,我的意思是将函数从foo.py
复制并粘贴到main()
内的块中) ,但这似乎效率太低且难以理解。想象一下40次在40个文件中重新定义40个njitted函数,可能在40个njitted主要函数中是什么感觉?这就是为什么这种“解决方案”对我来说似乎是一种非常糟糕的编程习惯,并且我想尽可能地避免这样做。
我只有一个问题。如何在Python上克服这个问题?
提前谢谢
编辑:添加了main()
将包括的一些操作