Python 的快取機制: functools.lru_cache
此公眾號會發表計算機考研(初複試資訊)、夏令營等資料,方便考研人對資訊的獲取,節約自身查詢資料的時間,回覆408,可獲得資料結構、作業系統、計算機網路、計算機組成原理全科資料
使用functools模組的lur_cache裝飾器,可以快取最多 maxsize 個此函式的呼叫結果,從而提高程式執行的效率,特別適合於耗時的函式,也就是說對於相同的計算不會再重複計算,直接在快取中取出值,像動態規劃中的陣列,儲存好已計算的值,為將來直接使用,適用於遞迴。引數maxsize
為最多快取的次數,如果為None,則無限制,設定為2n時,效能最佳;如果 typed=True
(注意,在 functools32 中沒有此引數),則不同引數型別的呼叫將分別快取,例如 f(3) 和 f(3.0)。
被 lru_cache 裝飾的函式會有 cache_clear
和 cache_info
兩個方法,分別用於清除快取和檢視快取資訊。
例如:
寫一個函式,輸入 n
,求斐波那契(Fibonacci)數列的第 n
項。斐波那契數列的定義如下:
F(0) = 0, F(1) = 1
F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契數列由 0 和 1 開始,之後的斐波那契數就是由之前的兩數相加而得出。
答案需要取模 1e9+7(1000000007),如計算初始結果為:1000000008,請返回 1。
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/fei-bo-na-qi-shu-lie-lcof
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
在這道題目中如果不加入快取機制,則會超時,使用快取機制可通過
python3解法
from functools import lru_cache
class Solution:
@lru_cache(None)
def fib(self, n: int) -> int:
if n<2:
return n
return (self.fib(n-1)+self.fib(n-2))%1000000007
相關文章
- MyBatis 的快取機制MyBatis快取
- mybatis的快取機制MyBatis快取
- Web 快取機制 與 快取策略Web快取
- HTTP快取機制HTTP快取
- web快取機制Web快取
- 前端快取機制前端快取
- LRU快取機制快取
- Mybatis快取機制MyBatis快取
- node中的快取機制快取
- http系列--徹底理解瀏覽器的快取機制(http快取機制)HTTP瀏覽器快取
- MyBatis快取機制(一級快取,二級快取)MyBatis快取
- 對於前端快取的理解(快取機制和快取型別)前端快取型別
- 瀏覽器的快取機制—強快取與協商快取瀏覽器快取
- 瀏覽器的快取機制瀏覽器快取
- Redis 的快取淘汰機制(Eviction)Redis快取
- HTTP快取機制及原理HTTP快取
- 黑科技:LocalStorage 快取機制快取
- Nginx快取原理及機制Nginx快取
- 瀏覽器快取機制瀏覽器快取
- yii2 快取機制快取
- http快取機制及其原理HTTP快取
- RecyclerView快取機制(scrap view)View快取
- SDWebImage 快取機制(筆記)Web快取筆記
- HTTP----HTTP快取機制HTTP快取
- HTTP請求的快取(Cache)機制HTTP快取
- 從WebView快取聊到Http 的快取機制 | 掘金技術徵文WebView快取HTTP
- Redis 的高效能快取機制的三類問題:快取擊穿、快取雪崩 和 快取穿透Redis快取穿透
- [人云亦云]http 的快取機制HTTP快取
- 真正帶你搞懂RecyclerView的快取機制View快取
- 前端也要懂Http快取機制前端HTTP快取
- 動態 SQL 和快取機制SQL快取
- RecyclerView快取機制(咋複用?)View快取
- RecyclerView快取機制(回收去哪?)View快取
- RecyclerView快取機制(回收些啥?)View快取
- [Leetcode]146.LRU快取機制LeetCode快取
- 聊一聊HTTP快取機制HTTP快取
- 瀏覽器快取機制(詳)瀏覽器快取
- LeetCode-146- LRU 快取機制LeetCode快取