2015-06-07 3 views
1

Как и в случае с redis и memcache, имеет ли Python по умолчанию кеширование, привязанное к его среде времени выполнения?Имеет ли Python сервис кэширования по умолчанию

Это должно быть местное кэширование. Мне нужно знать, не устанавливая и не вызывая какие-либо другие библиотеки, можно кэшировать некоторые данные с помощью существующей установки Python в моей системе. Мне нужно добавить данные в dict, но перед этим, если есть кеш по умолчанию, мне нужно добавить к этому.

Любая помощь приветствуется!

+2

кэшу просто что-то хранится в памяти. Хранение данных в python 'dict' можно считать кешем, поэтому вам нужно быть более конкретным. –

+0

Python dict должен работать на вас. Но я думаю, вы ищете что-то вроде эквивалента Python кэша Guava https://code.google.com/p/guava-libraries/wiki/CachesExplained или expired map http://www.java2s.com/Code/Java/ Коллекции-Структура данных/ExpiringMap.htm. Подобные вещи можно легко реализовать в Python (под управлением Python dict). –

+1

У Python 3 есть ['lru_cache'] (https://docs.python.org/3.4/library/functools.html#functools.lru_cache), который обертывает функции, создает аргументы для создания словаря и когда функция вызывается с тем же аргументы, он будет использовать dict вместо самой функции вызова. – myaut

ответ

1

Зависит от того, что вам нужно сделать. Если вы даете функции аргумент по умолчанию, который приравнивается к списку или словарю и никогда не дает ему аргумента для этого значения по умолчанию, параметр функции может действовать как кеш. Причина этого заключается в том, что Python оценивает свое определение функции во время компиляции, поэтому аргумент функции будет загружен во время компиляции. Возьмем, к примеру этот код:

def foo(value, arr=[]): 
    arr.append(value) 
    return arr 

Когда бежал так:

for i in range(10): 
    foo(i) 

результат:

[0] 
[0, 1] 
[0, 1, 2] 
[0, 1, 2, 3] 
[0, 1, 2, 3, 4] 
[0, 1, 2, 3, 4, 5] 
[0, 1, 2, 3, 4, 5, 6] 
[0, 1, 2, 3, 4, 5, 6, 7] 
[0, 1, 2, 3, 4, 5, 6, 7, 8] 
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
Смежные вопросы