Я хочу скомпилировать функции Ahead of Time (AOT), используя numba.pycc.CC .Моя проблема в том, что у меня есть 3 функции в 2 сценариях (где одна основная функция зависит от других 2), и я хочу только экспортировать одну из этих функций (основная функция), но я все еще хочу скомпилировать все 3 функции, чтобы они работали быстро.Из приведенных выше документов, похоже, не объясняется, как это сделать.
Псевдокод выглядит следующим образом
# 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
, но все функции jit
скомпилированы с помощью numba.Даже если я попытаюсь украсить каждую функцию с помощью jit
, я все равно получу те же ошибки.
Как мне скомпилировать все функции, но только экспортировать main
?