我想使用numba.pycc.CC提前编译函数(AOT)。我的问题是,我在2个脚本中有3个功能(其中一个主要功能取决于其他两个),我只想 export 其中一个功能(主要功能),但是我仍然想要编译所有这三个函数,以便它们快速运行。从上面的文档来看,它似乎没有解释如何做到这一点。
伪代码看起来像这样
# script1.py
from script2 import _func2
from numba.pycc import CC
cc = CC("my_module")
@cc.export("main", "f8[:, :](f8[;, :], f8)")
def main(mat, n):
"""Use _func1 to operate on an array `mat`"""
final_result = 2 * _func1(mat, n)
return final_result
def _func1(mat, n):
"""Use _func2 to operate on an array `mat`"""
out = ... <operate on `mat`> ...
out = _func2(out, n)
return out
然后是script2.py:
# script2.py
def _func2(mat, n):
result = ... <operate on `mat`>...
return result
当然,如果我不装饰其他功能,则会出现numba错误
>>> Untyped global name '_func1': cannot determine Numba type of <class 'function'>
文档似乎执行此操作的方法是导出每个函数,但这不是我想要执行的操作。我只想导出main
,但仍然具有用numba编译的所有功能jit
。即使我尝试用jit
装饰每个函数,我仍然会遇到相同的错误。
我如何编译所有功能,但仅导出main
?