从njitted main()调用njitted函数

时间:2019-09-25 03:54:22

标签: python python-3.x python-import numba function-call

一方面,我有一个文件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()将包括的一些操作

0 个答案:

没有答案