国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

Python 的lru_cache裝飾器使用簡介

瀏覽:4日期:2022-06-24 18:46:39

Python 的 lru_cache 裝飾器是一個為自定義函數提供緩存功能的裝飾器。其內部會在下次以相同參數調用該自定義函數時直接返回計算好的結果。通過緩存計算結果可以很好地提升性能。

1 從示例說起

假設我們有一個計算斐波那契數列的求和函數,其內部采用遞歸方式實現。

from xxx.clock_decorator import clock@clockdef fibonacci(n): if n<2: return n return fibonacci(n-2)+fibonacci(n-1)if __name__==’__main__’: logging.info(’fibonacci(6) -> %s’,fibonacci(6))

運行結果:

Python 的lru_cache裝飾器使用簡介

其中的 clock_decorator 實現是一個可以輸出某個函數運行時長的裝飾器1。

從輸出結果中可以看出,存在著嚴重的重復計算情況,比如 fibonacci(1) 就被計算了 5 次之多。這還只是計算 6 次的 fibonacci 函數。

2 優化

上面的示例代碼加入 lru_cache 裝飾器:

Python 的lru_cache裝飾器使用簡介

運行結果:

Python 的lru_cache裝飾器使用簡介

這次不存在重復計算現象,因此性能得到極大的提升。

3 比較

利用 cProfile 進行性能比較分析。它是一種確定性分析器,只測量 CPU 時間,并不包含內存消耗和其他與內存相關聯的信息2。

假設我們需要計算 fibonacci(33) 求和值。

(1)不使用 lru_cache 裝飾器

Python 的lru_cache裝飾器使用簡介

這個遞歸函數內部總共調用了 1000 多萬次的 fibonacci() 函數!

(2)使用了 lru_cache 裝飾器

Python 的lru_cache裝飾器使用簡介

使用了 lru_cache 裝飾器之后,這個遞歸函數只需調用 100 多次fibonacci() 函數!性能有了質的提升。

4 lru_cache 裝飾器

lru_cache 裝飾器支持兩個入參,它的完整定義格式為3: @functools.lru_cache(maxsize=128, typed=False)

參數 默認值 說明 maxsize 128 表示緩存大小。如果設置為 None,則不限大小;如果超過緩存大小,則使用 LRU 策略清理緩存。緩存的大小限制可確保緩存不會無限制增長。LRU(Least Recently Used),即刪除最近最少使用的緩存數據。 typed False 如果為true,不同類型的參數將會被分別緩存,比如區分浮點數與整型。 注意:由于使用了字典來存儲緩存,所以所裝飾的函數參數必須是可哈希的。利用 cache_info() 函數,我們還可以看到命中次數 hits,未命中次數 misses ,最大緩存數量 maxsize 和 當前緩存大小 currsize。使用方式是直接調用被裝飾函數的 cache_info(),形如:fibonacci.cache_info())。

Python 的lru_cache裝飾器使用簡介

只要某個函數遞歸調用并存在重復計算的情況,這時就要記著使用 lru_cache 這個性能加速器。

以上就是Python 的lru_cache 裝飾器使用簡介的詳細內容,更多關于Python 的lru_cache 裝飾器的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 免费人成在线观看网站视频 | 特级一级毛片视频免费观看 | 女人张开腿给人桶免费视频 | 成人精品视频一区二区三区 | 国产亚洲精品国产 | 欧美午夜a级精美理论片 | 亚欧视频在线观看 | 久久伊人热 | 毛片看| 99视频精品免费99在线 | 91久久青草精品38国产 | 欧美黑人巨大xxxxxxxx | 久久93精品国产91久久综合 | 国产黄色自拍 | 久久久久琪琪精品色 | 91视频国产一区 | 成人69 | 国产一区二区在线观看视频 | 成人午夜影院在线观看 | 国产一区二区亚洲精品天堂 | 国内自拍第1页 | 女人被男人躁得好爽免费文 | 麻豆md国产在线观看 | 欧美日韩一区二区综合在线视频 | 亚洲成a人片毛片在线 | 国产美女自拍视频 | 国产成人精品日本亚洲专区6 | 狠狠色丁香婷婷综合久久来 | 欧美啪啪一级毛片 | 香蕉超级碰碰碰97视频蜜芽 | 伊人狼人影院 | 黄色片三级网站 | 欧美区一区二 | 老人久久www免费人成看片 | 波多野结衣中文视频 | 男人的天堂在线观看视频不卡 | 91精品国产福利尤物免费 | 日本乱理伦片在线观看网址 | 精品在线小视频 | 手机看片自拍日韩日韩高清 | 亚洲视频国产视频 |