我們即將學習的是:在Python中實現更簡單好用的函數運算緩存。 函數運算緩存,顧名思義就是我們可以針對指定的函數,讓其記住過往參數輸入和返回結果,使得后續接收到相同的參數時跳過函數運算,直接返回已緩存的結果值。 很多朋友應該知道Python標準庫里functools.lru_cache可以做函數運算緩存,但是它的功能實在是太簡陋了,像過期時間設置之類的功能都沒有。 而我們可以使用第三方庫cachier來代替,它的基本使用方式非常簡單,使用pip install cachier完成安裝后,我們來看一個簡單的示例: 這里我們定義一個具有一定運算耗時的函數,利用cachier.cachier()裝飾,并利用參數stale_after設置緩存到期時間為10秒:
importtime fromcachierimportcachier fromdatetimeimporttimedelta @cachier(stale_after=timedelta(seconds=10)) defdemo(x:int,y:int): time.sleep(2) returnx*y foriinrange(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
審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
存儲
+關注
關注
13文章
4314瀏覽量
85842 -
函數
+關注
關注
3文章
4331瀏覽量
62610 -
python
+關注
關注
56文章
4797瀏覽量
84683
原文標題:Python 中更好用的函數運算緩存
文章出處:【微信號:AI科技大本營,微信公眾號:AI科技大本營】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
如何使用LUA腳本在串口屏中實現簡單的邏輯運算以及字符處理
物聯型串口屏通過 LUA 腳本配合工程可以完成大部分的內部邏輯處理,可以做到讓 MCU 只參與數據處理,不參與屏的邏輯處理。本文將介紹如何使用 LUA 腳本在串口屏中實現簡單的邏輯
發表于 10-17 08:00
?17次下載
python函數概念理解
函數是可以實現一些特定功能的小方法或是小程序。在Python中有很多內建函數,當然隨著學習的深入,我們可以學會創建對自己有用的
Python支持遞歸函數
Python支持遞歸函數——即直接或間接地調用自身以進行循環的函數。遞歸是頗為高級的話題,并且它在Python中相對少見。然而,它是一項應該
python函數返回多個參數
。 在Python中,可以使用關鍵字 return 來返回一個或多個值。在函數定義的末尾,可以使用 return 語句來指定
復數中i在Python中如何定義
復數中的虛數單位'i'在Python中可以通過使用cmath模塊來定義和使用。cmath模塊提供了處理復數的函數和常量。
python中如何引入math庫
在Python中,要使用math庫,首先需要先引入它。math庫是Python的一個標準庫,它提供了許多數學函數和常數。通過使用math庫,
split在python中的用法
split在python中的用法 split()是Python中一個非常常用的字符串函數,它能夠根據指定的分隔符將一個字符串分割成多個子字符
邏輯異或運算符在Python中的用法
,Python中的 ^ 符號實際上是一個按位異或運算符,用于對整數的二進制表示進行異或操作。 盡管如此,我們仍然可以通過一些方法來實現邏輯異或的功能,即當兩個布爾值不同時為真,相同時為
評論