您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“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)的。
參數(shù)解釋:
maxsize:此函數(shù)調(diào)用最多可以緩存多少個(gè)結(jié)果,如果為None則沒(méi)有限制,設(shè)置為2的冪時(shí),性能最佳
類型:如果為T(mén)rue,則將分別緩存不同參數(shù)類型的調(diào)用。
例如:
輸出如下,您可以看到第二個(gè)調(diào)用不執(zhí)行函數(shù)主體,而是直接將結(jié)果返回到緩存中:
calculating: 1 + 233 calculating: 2 + 35
以下是經(jīng)典的斐波那契數(shù)列,當(dāng)您指定較大的n時(shí),會(huì)有很多重復(fù)的計(jì)算
現(xiàn)在可以將第6點(diǎn)中介紹的timeit用于測(cè)試可以提高多少效率。
如果不使用lru_cache,則運(yùn)行時(shí)間為31秒:
使用lru_cache后,運(yùn)行速度過(guò)快,因此我將n的值從30調(diào)整為500,但是即使這樣,運(yùn)行時(shí)間也只有0.0004秒。 速度的提高非常顯著。
以上是“python如何使用內(nèi)置的緩存機(jī)制來(lái)提高效率”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(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)容。