程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python 中更好用的函數運算緩存

編輯:Python

作者 | 費弗裡

來源 | 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(1, 1)
    print(f'耗時{round(time.time() - start, 2)}秒')
    time.sleep(2)

過程打印記錄如下:

可以觀察到,我們的函數按照設定好的過期時間進行著緩存。除此之外,cachier還有很多其他實用特性,譬如基於mongodb實現分布式存儲等,你可以前往其官方倉庫查看詳細文檔說明:https://github.com/shaypal5/cachier

往期回顧

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

Deepfake 技術換臉真假難辨!

pandas常用的8個option設置!

7歲男童因下棋太快,被機器人夾斷手指?

分享
點收藏
點點贊
點在看

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved