社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python 中更好用的函数运算缓存

AI科技大本营 • 1 年前 • 295 次点击  
作者 | 费弗里
来源 | Python大数据分析
我们即将学习的是:在Python中实现更简单好用的函数运算缓存
函数运算缓存,顾名思义就是我们可以针对指定的函数,让其记住过往参数输入和返回结果,使得后续接收到相同的参数时跳过函数运算,直接返回已缓存的结果值。
很多朋友应该知道Python标准库里functools.lru_cache可以做函数运算缓存,但是它的功能实在是太简陋了,像过期时间设置之类的功能都没有。
而我们可以使用第三方库cachier来代替,它的基本使用方式非常简单,使用pip install cachier完成安装后,我们来看一个简单的示例:
这里我们定义一个具有一定运算耗时的函数,利用cachier.cachier()装饰,并利用参数stale_after设置缓存到期时间为10秒:
import time
from cachier import cachier
from datetime import timedelta

@cachier(stale_after=timedelta(seconds=10))
def demo(x: int, y: int):
    
    time.sleep(2)
    
    return x * y

for i in range(10):
    print('-'*50)
    print(f'第{i+1}次执行')
    start = time.time()
    demo(11)
    print(f'耗时{round(time.time() - start, 2)}秒')

    time.sleep(2)
过程打印记录如下:
可以观察到,我们的函数按照设定好的过期时间进行着缓存。除此之外,cachier还有很多其他实用特性,譬如基于mongodb实现分布式存储等,你可以前往其官方仓库查看详细文档说明:https://github.com/shaypal5/cachier


往期回顾

“如今,99%以上的代码都是垃圾!”


Deepfake 技术换脸真假难辨!


pandas常用的8个option设置!


7岁男童因下棋太快,被机器人夹断手指?


分享

点收藏

点点赞

点在看

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/138356
 
295 次点击