Я использую модуль joblib.Memory
для кэширования некоторых функций в нескольких модулях. Кеш инициализируется внутри модулей и классов отдельно.
Module1:
memory = Memory(location='/cache/')
@memory.cache
def heavy_function(...)
.....
Module2:
memory = Memory(location='/cache/')
@memory.cache
def heavy_function2(...)
.....
Module3:
import Module1
import Module2
def heavy_function3(...)
Module1.heavy_function1(...)
Module1.heavy_function1(...)
.....
Теперь у меня есть скрипт модульного тестирования, и я хочу отключить глобальное использование кэша во время модульного тестирования, чтобы убедиться, что все вычислено правильно.
Это возможно без ручного отключения его для каждого модуля через
Module1.memory.cachedir=None
или без удаления кешира?
Мое текущее решение просто исправляет каждый вызов памяти вручную
unittest1:
from joblib import Memory
import Module1
Module1.memory = Memory(location=None)
...
unittest.run()
unittest3:
from joblib import Memory
import Module1 # need to import module 1 just to disable its memory
import Module2 # need to import module 2 just to disable its memory
import Modul3
Module1.memory = Memory(location=None)
Module2.memory = Memory(location=None)
...
unittest.run()
Чем больше модулей я создаю, тем больше ручного исправления Памяти мне нужно. Я думал, что может быть лучшее решение. Один обходной путь предложен мной ниже.