среда, 18 марта 2015 г.

Python: Простое кэширование для вашего метода

При написании небольшой утилиты на Python потребовалось оптимизировать взаимодействие с внешней системой (получение имени организации по её id). Очевидно, что простейшим решением будет кэширование результатов. А простейшим решением будет использование dict / или его аналога.

Прежде чем написать свой кэш на dict (у меня все работает в один поток) заглянул на StackOverflow и совсем не зря: Is there a Python caching library?. Вопрос очень старый, но содержит очень интересный ответ:

from functools import lru_cache

@lru_cache(maxsize=256)
def f(x):
  return x*x

Я надеюсь этот snippet пригодится не только мне.

ps: В HighLoad production режиме я его использовать не рекомендую, но для повседневных утилит подходит.