#Python小工具系列#
我开辟这个系列主要是强迫我自己梳理目前写的代码之后产生的各种小工具,并且能够聚合在一起把它升级成工具包。
Python
今天给大家介绍一个自动缓存装饰器(file_cache)。
我知道大家肯定会说在Python的functools中有lru_cache装饰器可以使用。lru_cache是使用的内存缓存,然而对于持久化的需求就不够用了。
持久化的缓存,灵活轻便就是我写这个工具的初衷。有时候对于一个demo或者简单的加速,使用Redis做缓存太重了。
因此磁盘缓存的装饰器就应运而生了。你只需要把它放入你的tool文件夹中,并在被需要的地方import,给需要缓存的函数上加上该装饰器,就搞定了,so easy。
该缓冲器是结合硬盘缓存的小工具,其只依赖python基础包,故可以说是无依赖,唯一的要求就是必须存在/tmp文件夹的系统。这一点可以在后期修改。
这个装饰器代码分类三部分,第一部分路径处理函数(get_cache_path),第二部分核心缓存函数(_cache),以及最后一部分装饰器函数(file_cache).
路径处理函数(get_cache_path)
get_cache_path
该函数主要是在'/tmp/'文件夹中生成一个当天日期的文件夹,如果已经存在就直接跳过创建过程,并且返回该文件夹的路径。
核心缓存函数(_cache)
_cache
该函数主要获取被装饰的函数的名称和参数信息,在指定缓存文件夹中查找该文件,如果存在就直接返回缓存文件中的值,否则会直接运行函数,并且将其缓存下来,之后再返回。
装饰器函数(file_cache)
装饰器主程序,主要实现了自适应参数装饰器效果,既可以以不带参数装饰器方式使用,也可以以带装饰器形式使用。
用法
在需要的地方引用,然后直接是装饰器方式使用即可。如下图所示
示例
代码获取地址:httPS://raw.githubusercontent.com/sn0wfree/CodersWheel/v0.1.2/Tools/file_cache.py
编程语言原本是被设计成专门使用在计算机上的,但它们也可以用来定义算法或者数据结构。正是因为如此,程序员才会试图使程序代码更容易阅读。