Вызов несовпадающих функций из несвязанного main () - PullRequest
0 голосов
/ 25 сентября 2019

С одной стороны, у меня есть файл 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() будет включать

...