溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python如何使用內(nèi)置的緩存機(jī)制來(lái)提高效率

發(fā)布時(shí)間:2022-03-17 10:00:28 來(lái)源:億速云 閱讀:242 作者:小新 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要為大家展示了“python如何使用內(nèi)置的緩存機(jī)制來(lái)提高效率”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“python如何使用內(nèi)置的緩存機(jī)制來(lái)提高效率”這篇文章吧。

 使用內(nèi)置的緩存機(jī)制來(lái)提高效率

緩存是一種存儲(chǔ)定量數(shù)據(jù)以滿足后續(xù)采集需求的方法,旨在加快數(shù)據(jù)采集的速度。

數(shù)據(jù)生成過(guò)程可能需要諸如計(jì)算,正則化和遠(yuǎn)程獲取之類的操作。 如果同一數(shù)據(jù)需要多次使用,則每次重新生成都將浪費(fèi)時(shí)間。

因此,如果將通過(guò)諸如計(jì)算或遠(yuǎn)程請(qǐng)求之類的操作獲得的數(shù)據(jù)進(jìn)行緩存,則將加速后續(xù)的數(shù)據(jù)獲取需求。

為了達(dá)到這個(gè)要求,Python 3.2+為我們提供了一種易于實(shí)現(xiàn)的機(jī)制,而無(wú)需您編寫(xiě)這樣的邏輯代碼。

該機(jī)制是在functool模塊的lru_cache裝飾器中實(shí)現(xiàn)的。

python如何使用內(nèi)置的緩存機(jī)制來(lái)提高效率

參數(shù)解釋:

  • maxsize:此函數(shù)調(diào)用最多可以緩存多少個(gè)結(jié)果,如果為None則沒(méi)有限制,設(shè)置為2的冪時(shí),性能最佳

  • 類型:如果為T(mén)rue,則將分別緩存不同參數(shù)類型的調(diào)用。

例如:

python如何使用內(nèi)置的緩存機(jī)制來(lái)提高效率

輸出如下,您可以看到第二個(gè)調(diào)用不執(zhí)行函數(shù)主體,而是直接將結(jié)果返回到緩存中:

calculating: 1 + 233  calculating: 2 + 35

以下是經(jīng)典的斐波那契數(shù)列,當(dāng)您指定較大的n時(shí),會(huì)有很多重復(fù)的計(jì)算

python如何使用內(nèi)置的緩存機(jī)制來(lái)提高效率

現(xiàn)在可以將第6點(diǎn)中介紹的timeit用于測(cè)試可以提高多少效率。

如果不使用lru_cache,則運(yùn)行時(shí)間為31秒:

python如何使用內(nèi)置的緩存機(jī)制來(lái)提高效率

使用lru_cache后,運(yùn)行速度過(guò)快,因此我將n的值從30調(diào)整為500,但是即使這樣,運(yùn)行時(shí)間也只有0.0004秒。 速度的提高非常顯著。

python如何使用內(nèi)置的緩存機(jī)制來(lái)提高效率

以上是“python如何使用內(nèi)置的緩存機(jī)制來(lái)提高效率”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI