可扩展的备忘录集合和装饰器

cachetools的Python项目详细描述


本模块提供各种备忘录集合和装饰器, 包括python 3标准库的变体@lru_cache 函数装饰器。

fromcachetoolsimportcached,LRUCache,TTLCache# speed up calculating Fibonacci numbers with dynamic programming@cached(cache={})deffib(n):returnnifn<2elsefib(n-1)+fib(n-2)# cache least recently used Python Enhancement Proposals@cached(cache=LRUCache(maxsize=32))defget_pep(num):url='http://www.python.org/dev/peps/pep-%04d/'%numwithurllib.request.urlopen(url)ass:returns.read()# cache weather data for no longer than ten minutes@cached(cache=TTLCache(maxsize=1024,ttl=600))defget_weather(place):returnowm.weather_at_place(place).get_weather()

在这个模块中,cache是 固定最大尺寸。当缓存已满时,即通过添加另一个 项目缓存将超过其最大大小,缓存必须选择 根据合适的cache algorithm丢弃哪些项。在 一般来说,缓存的大小是其项的总大小,而项的 大小是其值的属性或函数,例如 sys.getsizeof(value)。对于每个 项计数为1,缓存的大小等于其 项目,或len(cache)

基于不同缓存算法的多个缓存类是 实现和修饰程序,以便轻松记住函数和方法 电话也有。

有关详细信息,请参阅联机documentation

安装

使用pip安装cachetools:

pip install cachetools

许可证

版权所有(c)2014-2019 Thomas Kemmer。

根据MIT License授权。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
返回数组无效的java方法   异步Java CompletableFuture获取其请求   java是否可以像RDBMS那样使用视图?   java如何在屏幕上只运行一个片段?   java无法从Vertex jdbc查询中获取结果   java从jtable获取对象的正确方法   java Spring 3数据设备替代方案   Java BigDecimal:四舍五入到客户首选的数字和增量   JAVA主窗口没有出现,我必须左键单击主窗口。java并单击run查看它   Eclipse RCP中的java进程自定义设备事件   JavaEclipse一次又一次地构建代码(没有任何更改)?   java如何实现对象合并