使用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')

刷新缓存

我发现有时我想刷新一个特定的缓存 只有文件。这通常是因为发生了一个错误,我已经修复了 错误或是因为我正在从一个没有 工作得很好。

最好有一种方便的方法来刷新这些文件。 在此之前,我建议您将参数记录到函数调用中 这将产生缓存错误,然后删除相应的文件。

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

推荐PyPI第三方库


热门话题
java JMeter未正确解码base64将导致生成空白PDF   java我如何添加javax。媒体jai.*项目中的包?   java是我的公式错了还是有任何一行代码使它错了?   java Android:后退按钮跳过webView   使用Java CDI Weld重新连接到对话   带有表粘贴的java网格web组件   java在JTable中编辑时防止重复值   java Jersey获取摘要或基本HTTP身份验证用户和密码   java如何检查Android EditText整数值?   html如何使用Java从网站中提取动态字符串/单词   java如何解决使用Boilerpipe时的ConnectException错误?   java获取hadoop名称节点格式   Java中占位符解析器的解析   JavaSpringWebhook端点获取整个主体以及pojo   Java:将颜色字符串值转换为十六进制值   捕捉光标时受帧率影响的java LibGDX鼠标灵敏度   java Spring MVC实现大型应用程序DTOs/ViewModels的最佳实践?   基于特性的java模块化安卓应用   java Spring控制器请求参数作为来自jQuery get()的POJO