С одной стороны, у меня есть файл 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 будет генерировать исключение, в котором говорится что-то вроде «Внутри njited функции main()
вы не можете сделать вызов функции, которая вызывает другие njited функции, определенные вне области действия main()
"
Мне известно об одном решении, которое заключается в ручном переопределении всех связанных функций внутри main()
(под переопределением я имею в виду копирование и вставка функций из foo.py
в блок внутри main()
), но это кажетсяслишком неэффективно и не пифонично.Представьте себе, каково это переопределить 40 связанных функций, возможно, 40 основных функций в 40 файлах в 40 случаях?Вот почему это «решение» кажется мне очень плохой практикой программирования, и я хочу как можно больше избегать его.
У меня только один вопрос.Как побороть это питонически?
Заранее спасибо
РЕДАКТИРОВАТЬ: добавлены некоторые действия main()
будет включать