Язык программирования Python

Функции Python с использованием Cache – кеширование на Python

Бывают случаи, когда мы выполняем функции снова и снова с одними и теми же параметрами.

Если эти функции представляют собой математические операции или обращение к базе данных, они могут потребовать слишком больших вычислительных затрат или времени выполнения.

Что если мы добавим кэш в нашу функцию?

В Python это сделать очень просто.

Для этого в функции достаточно использовать параметр _cache.

Это переменная, которая объявляется при создании функции и не прекращает свое существование до тех пор, пока функция не завершит свое выполнение.

Переменная _cache – это словарь, в котором мы можем хранить любые данные.

Чтобы он был доступен в нашей функции, просто определите его среди ее параметров, например, так:

def my_funcion(p1, p2, p3, ..., _cache={}): # код функции ...
Code language: PHP (php)

Просто, не так ли?

Зачем это нужно? Чтобы избежать необходимости вычислять определенные значения несколько раз.

Особенно если речь идет о сложных расчетах.

Например, приведенная ниже функция возвращает сумму тысячекратно умноженную на квадратный корень из числа, переданного параметром (я вычислил его 1000 раз, чтобы затраты были выше).

Но он рассчитывает его только в первый раз.

from math import sqrt def my_sqrt(n, _cache={}): if not _cache.has_key(n): total = 0 for i in range(1000): total = sqrt(n) + total _cache[n] = total return _cache[n]
Code language: JavaScript (javascript)

Если мы измерим время выполнения этой функции 2 раза, то результат будет следующим:

>>> my_sqrt(200) Время: 0.000513 14142.135623731116 >>> my_sqrt(200) Время: 5.99999999995e-06 14142.135623731116
Code language: CSS (css)

Результат одинаковый. Но мы можем заметить, что время выполнения во второй раз примерно в 100 раз меньше.

В случае доступа к базе данных улучшение может быть существеннее.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *