最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python緩存技術(shù)實(shí)現(xiàn)過(guò)程詳解

 更新時(shí)間:2019年09月25日 08:47:29   投稿:yaominghui  
這篇文章主要介紹了Python緩存技術(shù)實(shí)現(xiàn)過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

一段非常簡(jiǎn)單代碼

普通調(diào)用方式

def console1(a, b):
  print("進(jìn)入函數(shù)")
  return (a, b)

print(console1(3, 'a'))
print(console1(2, 'b'))
print(console1(3.0, 'a'))

很簡(jiǎn)單的一段代碼,傳入兩個(gè)參數(shù)。然后打印輸出。輸出結(jié)果

進(jìn)入函數(shù)
(3, 'a')
進(jìn)入函數(shù)
(2, 'b')
進(jìn)入函數(shù)
(3.0, 'a')

使用某個(gè)裝飾器后

接下來(lái)我們引入functools模塊的lru_cache,python3自帶模塊。

from functools import lru_cache
@lru_cache()
def console2(a, b):
  print("進(jìn)入函數(shù)")
  return (a, b)
print(console2(3, 'a'))
print(console2(2, 'b'))
print(console2(3.0, 'a'))

ほら、驚喜來(lái)了。

進(jìn)入函數(shù)
(3, 'a')
進(jìn)入函數(shù)
(2, 'b')
(3, 'a')

我們發(fā)現(xiàn),少了一次進(jìn)入函數(shù)的打印,這是怎么回事呢?這就是接下來(lái)要說(shuō)的LRU緩存技術(shù)了。

我們理解下什么是LRU

LRU (Least Recently Used) 是緩存置換策略中的一種常用的算法。當(dāng)緩存隊(duì)列已滿時(shí),新的元素加入隊(duì)列時(shí),需要從現(xiàn)有隊(duì)列中移除一個(gè)元素,LRU 策略就是將最近最少被訪問(wèn)的元素移除,從而騰出空間給新的元素。

python中的實(shí)現(xiàn)

python3中的functools模塊的lru_cache實(shí)現(xiàn)了這個(gè)功能,lru_cache裝飾器會(huì)記錄以往函數(shù)運(yùn)行的結(jié)果,實(shí)現(xiàn)了備忘(memoization)功能,避免參數(shù)重復(fù)時(shí)反復(fù)調(diào)用,達(dá)到提高性能的作用,在遞歸函數(shù)中作用特別明顯。這是一項(xiàng)優(yōu)化技術(shù),它把耗時(shí)的函數(shù)的結(jié)果保存起來(lái),避免傳入相同的參數(shù)時(shí)重復(fù)計(jì)算。

帶參數(shù)的lru_cache

使用方法lru_cache(maxsize=128, typed=False)maxsize可以緩存最多個(gè)此函數(shù)的調(diào)用結(jié)果,從而提高程序執(zhí)行的效率,特別適合于耗時(shí)的函數(shù)。參數(shù)maxsize為最多緩存的次數(shù),如果為None,則無(wú)限制,設(shè)置為2的n次冪時(shí),性能最佳;如果 typed=True,則不同參數(shù)類型的調(diào)用將分別緩存,例如 f(3) 和 f(3.0),默認(rèn)False來(lái)一段綜合代碼:

from functools import lru_cache

def console1(a, b):
  print("進(jìn)入函數(shù)")
  return (a, b)


@lru_cache()
def console2(a, b):
  print("進(jìn)入函數(shù)")
  return (a, b)


@lru_cache(maxsize=256, typed=True)
def console3(a, b):
  '''

  :param a:
  :param b:
  :return:
  '''
  print("進(jìn)入函數(shù)")
  return (a, b)


print(console1(3, 'a'))
print(console1(2, 'b'))
print(console1(3.0, 'a'))
print("*" * 40)
print(console2(3, 'a'))
print(console2(2, 'b'))
print(console2(3.0, 'a'))
print("*" * 40)
print(console3(3, 'a'))
print(console3(2, 'b'))
print(console3(3.0, 'a'))

同樣的可以用到爬蟲(chóng)的去重操作上,避免網(wǎng)頁(yè)的重復(fù)請(qǐng)求。在后期存儲(chǔ)的時(shí)候做判斷即可。

from functools import lru_cache
from requests_html import HTMLSession
session=HTMLSession()
@lru_cache()
def get_html(url):
  req=session.get(url)
  print(url)
  return req

urllist=["https://www.baidu.com","https://pypi.org/project/pylru/1.0.9/","https://www.baidu.com"]

if __name__ == '__main__':
  for i in urllist:
    print(get_html(i))

輸出

https://www.baidu.com
<Response [200]>
https://pypi.org/project/pylru/1.0.9/
<Response [200]>
<Response [200]>

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Django基礎(chǔ)之Model操作步驟(介紹)

    Django基礎(chǔ)之Model操作步驟(介紹)

    下面小編就為大家?guī)?lái)一篇Django基礎(chǔ)之Model操作步驟(介紹)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • Python基于SMTP協(xié)議實(shí)現(xiàn)發(fā)送郵件功能詳解

    Python基于SMTP協(xié)議實(shí)現(xiàn)發(fā)送郵件功能詳解

    這篇文章主要介紹了Python基于SMTP協(xié)議實(shí)現(xiàn)發(fā)送郵件功能,結(jié)合實(shí)例形式分析了Python使用SMTP協(xié)議實(shí)現(xiàn)郵件發(fā)送的相關(guān)操作技巧,并總結(jié)分析了Python發(fā)送純文本郵件、郵件附件、圖片郵件等相關(guān)操作技巧,需要的朋友可以參考下
    2018-08-08
  • Python 條件判斷的縮寫(xiě)方法

    Python 條件判斷的縮寫(xiě)方法

    開(kāi)始以為Python中沒(méi)有像其他語(yǔ)言一樣的條件判斷的縮寫(xiě)形式:
    2008-09-09
  • python實(shí)現(xiàn)幾種歸一化方法(Normalization Method)

    python實(shí)現(xiàn)幾種歸一化方法(Normalization Method)

    這篇文章主要介紹了python實(shí)現(xiàn)幾種歸一化方法(Normalization Method),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python基礎(chǔ)學(xué)習(xí)函數(shù)+模塊+類

    Python基礎(chǔ)學(xué)習(xí)函數(shù)+模塊+類

    這篇文章主要介紹了Python基礎(chǔ)學(xué)習(xí)函數(shù)+模塊+類,這是基礎(chǔ)學(xué)習(xí)的第三篇內(nèi)容,小編已把前兩篇鏈接放在下面,需要學(xué)習(xí)的同學(xué)可以參考一下
    2022-05-05
  • pyinstaller打包程序exe踩過(guò)的坑

    pyinstaller打包程序exe踩過(guò)的坑

    這篇文章主要介紹了pyinstaller打包exe踩過(guò)的坑,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • python批處理將圖片進(jìn)行放大實(shí)例代碼

    python批處理將圖片進(jìn)行放大實(shí)例代碼

    最近處理一些規(guī)格不一的照片,需要修改成指定尺寸便于打印,下面這篇文章主要給大家介紹了關(guān)于python批處理將圖片進(jìn)行放大的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-12-12
  • Python filter過(guò)濾器原理及實(shí)例應(yīng)用

    Python filter過(guò)濾器原理及實(shí)例應(yīng)用

    這篇文章主要介紹了Python filter過(guò)濾器原理及實(shí)例應(yīng)用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Python?dateutil庫(kù)簡(jiǎn)化日期時(shí)間處理利器使用場(chǎng)景實(shí)踐

    Python?dateutil庫(kù)簡(jiǎn)化日期時(shí)間處理利器使用場(chǎng)景實(shí)踐

    在Python中,處理日期和時(shí)間是常見(jiàn)的任務(wù)之一,dateutil庫(kù)是Python標(biāo)準(zhǔn)庫(kù)中datetime模塊的擴(kuò)展,提供了許多方便的工具和函數(shù),簡(jiǎn)化了日期和時(shí)間的操作
    2023-12-12
  • Python將Excel表格按某列拆分為多個(gè)sheet實(shí)現(xiàn)過(guò)程

    Python將Excel表格按某列拆分為多個(gè)sheet實(shí)現(xiàn)過(guò)程

    這篇文章主要為大家介紹了Python實(shí)現(xiàn)將Excel表格按某列拆分為多個(gè)sheet,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05

最新評(píng)論

宿州市| 佳木斯市| 东山县| 浮山县| 寿宁县| 五河县| 五河县| 吴堡县| 吐鲁番市| 宁夏| 左贡县| 伊吾县| 左贡县| 太湖县| 阿荣旗| 保山市| 晋中市| 贵州省| 政和县| 新建县| 宁蒗| 博白县| 临漳县| 平远县| 睢宁县| 会东县| 洛南县| 海宁市| 海南省| 凌云县| 云梦县| 遂川县| 内黄县| 东明县| 灌云县| 甘南县| 苏尼特右旗| 长寿区| 蓝山县| 南皮县| 策勒县|