кеш numba jited функция с аргументами включает в себя функции объектов - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть некоторые функции, такие как приведенный ниже пример. Цель состоит в том, чтобы передать первую функцию в качестве аргумента второй функции и использовать numba для ее ускорения. Но если я поверну cache=True для второй функции, появится сообщение об ошибке:

TypeError: can't pickle weakref objects

Моя версия numba 0.49.0

Есть ли решение / альтернативное решение этой проблемы, чтобы я мог кэшировать компиляцию?

@njit(cache=True)
def func_test(t1, t2):

    return np.corrcoef(np.argsort(np.argsort(t1)), np.argsort(np.argsort(t2)))

@njit(cache=True)
def test_func_input2(func_1):

    t = list(range(500))
    t2 = list(range(500))
    for i in range(1000):
        t.pop(0)
        t2.pop(0)
        t.append(i)
        t2.append(i)
        a = np.array(t)
        b = np.array(t2)
        x = func_1(a, b)
    return x

if __name__ == '__main__':
    import numpy as np
    test_func_input2(func_test)
...