Kivy - 缓存管理器



在 Kivy 框架中,Cache 类通过将 Python 对象赋值为唯一键的值来存储一个或多个 Python 对象。Kivy 的缓存管理器通过限制其中对象的数量或对其访问设置超时限制来控制其中的对象。

Cache 类在 "kivy.cache" 模块中定义。它包含静态方法:register()、append()、get() 等。

首先,您需要通过设置最大对象数和超时时间来在缓存管理器中注册一个类别。

from kivy.cache import Cache
Cache.register(category='mycache', limit=10, timeout=5)

您现在可以添加最多 10 个 Python 对象,每个对象都有一个唯一的键。

key = 'objectid'
instance = Label(text=text)
Cache.append('mycache', key, instance)

get() 方法从缓存中检索对象。

instance = Cache.get('mycache', key)

Cache 类定义了以下**方法和属性** -

register() 方法

此方法使用指定的限制在缓存中注册一个新类别。它具有以下参数 -

  • category - 类别的字符串标识符。

  • limit - 缓存中允许的最大对象数。如果为 None,则不应用限制。

  • timeout - 对象将在缓存中删除之前的时间。

append() 方法

此方法将新对象添加到缓存中。定义了以下参数 -

  • category - 类别的字符串标识符。

  • key - 要存储的对象的唯一标识符。

  • obj - 要存储在缓存中的对象。

  • timeout - 如果对象未被使用,则在该时间后将其删除。如果使用 None 作为键,则会引发 ValueError。

get() 方法

此方法用于从缓存中获取对象,具有以下参数 -

  • category - 类别的字符串标识符。

  • key - 存储中对象的唯一标识符。

  • default - 如果未找到键,则返回的默认值。

示例

请查看以下示例 -

from kivy.cache import Cache
from kivy.uix.button import Button
from kivy.uix.label import Label

Cache.register(category='CacheTest', limit=5, timeout=15)

b1 = Button(text='Button Cache Test')
Cache.append(category='CacheTest', key='Button', obj=b1)

l1 = Label(text='Label Cache Test')
Cache.append(category='CacheTest', key='Label', obj=l1)

ret = (Cache.get('CacheTest', 'Label').text)
print (ret)

输出

它将产生以下输出 -

Label Cache Test
广告