Память — это медная доска, покрытая буквами, которые время незаметно сглаживает, если порой не возобновлять их резцом (Джон Локк). Рассмотрим простой способ кэширования результатов работы функций, чтобы не выполнять большие вычисления повторно или работать офлайн с однократно загруженными данными. Для примера рассмотрим ресурсоемкую функцию: import numpy as np
import pandas as pd
np.random.seed(0)
def calc_corr():
ar = np.random.randint(-100,100, size=10000000)
return pd.DataFrame({'val1':ar, 'val2':ar**2}).corr()
%time calc_corr() Для кэширования результатов ее работы воспользуемся библиотекой joblib и создадим объект класса joblib.Memory с указанием пути к кэшируемой директории. Затем декорируем нашу функцию, передав в качестве аргумента в метод cache: import joblib
memory = joblib.Memory('data/cache')
calc_corr_cache = memory.cache(calc_corr)
%time calc_corr_cache() Однократное выполнение calc_corr вместе с созданием кэша выдает сравнимое время с самым первым запуск