作者 | 費弗裡
來源 | 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歲男童因下棋太快,被機器人夾斷手指?
分享
點收藏
點點贊
點在看