使用pickle和文件的缓存函数
picklecache的Python项目详细描述
缓存函数的结果。
简单使用
用@cache(cachedir, **kwargs)装饰函数。 例如,
@cache() def is_prime(number): for n in range(2, number): if number % n == 0: return False return True
爱好者使用
非默认目录
如果不向缓存传递参数,如上面的示例所示, 缓存将存储在以函数命名的目录中。 若要设置其他目录,请将其作为参数传递。
@cache('~/.primes') def is_prime(number): for n in range(2, number): if number % n == 0: return False return True
我建议将缓存存储在 主目录,如上图所示。
配置
Kwargs被传递给pickle_warehouse.Warehouse,所以 可以做一些有趣的事情,比如更改序列化函数。
@cache('~/.http', serializer = pickle_warehouse.serializers.identity) def get(url): return requests.get(url).text
阅读有关 pickle-warehouse page。
非识别参数
如果要传递参数,但不将其用作标识符, 传递一个非关键字参数;这些参数传递给函数 但不要形成标识符。例如,
@cache('~/.http') def get(url, auth = None): return requests.get(url, auth = auth) get('http://this.website.com', auth = ('username', 'password')
刷新缓存
我发现有时我想刷新一个特定的缓存 只有文件。这通常是因为发生了一个错误,我已经修复了 错误或是因为我正在从一个没有 工作得很好。
最好有一种方便的方法来刷新这些文件。 在此之前,我建议您将参数记录到函数调用中 这将产生缓存错误,然后删除相应的文件。