РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
505 of 643 menu

Декоратор memoize

Декоратор memoize применяется к функциям и сохраняет результат их выполнения в кеше. При повторном вызове с теми же аргументами функция не выполняется заново - возвращается сохранённое значение. Первым параметром передаётся время жизни кеша timeout в секундах, вторым - префикс ключа key_prefix.

Синтаксис

@cache.memoize(timeout, key_prefix)

Пример

Давайте закешируем результат функции, складывающей два числа:

from flask import Flask from flask_caching import Cache app = Flask(__name__) app.config['CACHE_TYPE'] = 'simple' cache = Cache(app) @cache.memoize(timeout=50) def add(a, b): return a + b @app.route('/') def index(): res = add(1, 2) return str(res)

Результат выполнения кода:

3

Пример

Давайте убедимся, что при повторном вызове с теми же аргументами функция не выполняется:

from flask import Flask from flask_caching import Cache app = Flask(__name__) app.config['CACHE_TYPE'] = 'simple' cache = Cache(app) @cache.memoize(timeout=50) def greet(name): print('function called') return 'hello ' + name @app.route('/') def index(): res1 = greet('user') res2 = greet('user') return res2

В консоли строка 'function called' выведется только один раз, так как второй вызов берёт значение из кеша. Результат выполнения кода:

hello user

Пример

Давайте зададим префикс ключа, чтобы различать кеш разных функций:

from flask import Flask from flask_caching import Cache app = Flask(__name__) app.config['CACHE_TYPE'] = 'simple' cache = Cache(app) @cache.memoize(timeout=50, key_prefix='my_prefix') def get_value(x): return x * 2 @app.route('/') def index(): res = get_value(5) return str(res)

Результат выполнения кода:

10

Смотрите также

  • декоратор cached,
    который кеширует результат представления
  • метод delete,
    который удаляет значение из кеша
  • метод get,
    который читает значение из кеша
  • метод set,
    который записывает значение в кеш
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить