Можно ли иметь список функций в jit-функции? - PullRequest
0 голосов
/ 26 октября 2019

Мне просто интересно, возможно ли использовать список функций или даже словарь функций внутри функции jit.

например,

def func1():
    pass

def func2():
    pass

list_ = [func1, func2]

@njit
def jit_func(list_):
    # do something with list of functions

Не удается реализовать что-то подобноетак интересно, если это возможно / если есть обходной путь.

1 Ответ

0 голосов
/ 26 октября 2019

Вы можете использовать декоратор для основных функций и использовать лямбду или обобщенную функцию f для запуска списка функций. Если у вас много функций для запуска, вы можете использовать Pool.map для параллельного запуска функций и сбора всех результатов в виде списка результатов.

from multiprocessing import Pool


@njit
def func1():
    return 'func1'

@njit
def func2():
    return 'func2'

def f(fun):
    '''
    Run a function.
    '''
    return fun()

list_ = [func1, func2]

with Pool(2) as p:
    r = p.map(f, list_)


>>>r
['func1', 'func2']
...