TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

TGINSIGHT SIMILAR POSTS

Најди сличен содржај

Изворен канал @pythonotes · Post #24 · 22 јан.

Кеширование, это способ оптимизировать скорость программы за счёт повторного переиспользования рассчитанных данных. При этом инвалидация кеша вопрос сложный и неоднозначный. Тем не менее, есть ряд простых случаев, когда кеш вполне уместен. Имеется функция, которая принимает аргументы и возвращает некое значение. При одинаковых аргументах результат всегда одинаковый. Давайте приведём такой очевидный пример: def add(a, b): return a + b Каждому понятно, что, если в эту функцию мы будем отправлять одни и те же данные, мы будем получать одинаковый результат, это важно. Тогда зачем нам каждый раз это пересчитывать? Давайте кешировать! Для этого используем готовое решение из стандартной библиотеки functools.lru_cache() (Python3.4+) from functools import lru_cache import time @lru_cache(maxsize=64) def add(a, b): time.sleep(1) return a + b Добавил задержку чтобы имитировать расчёты. Параметр декоратора maxsize указывает сколько именно разных пар аргументы-результат мы будем хранить. Теперь вызываем функцию с замером времени. Используем массив с повторяющимися значениями >>> for i in [1, 2, 3, 2, 1, 4]: >>> start = time.perf_counter() >>> add(2, i) >>> end = time.perf_counter()-start >>> print(f'i={i}, Time={end}') i=1, Time=1.0007981109 i=2, Time=1.0008854520 i=3, Time=1.0008842469 i=2, Time=0.0000204799 # из кеша i=1, Time=0.0000132510 # из кеша i=4, Time=1.0008038339 В распечатке времени видно, как только входящие данные повторяются, вместо пересчёта нам возвращается готовое значение из кеша. Такое кеширование будет неверным, если результат зависит не только от входящих данных. Учитывайте это! #tricks

Hashtags

Резултати

Пронајдени 1 слични објави

Глобално пребарување

sudo recast

@sudo_recast · Post #918 · 17.04.2025 г., 09:47

A useful command when you encounter conflicts while cherry-picking: tig HEAD $(git rev-parse CHERRY_PICK_HEAD 2>/dev/null) -- $(git diff --name-only --diff-filter=U | head -1) #tricks@sudo_recast

Hashtags