亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Python超詳細(xì)的講解運(yùn)存管理模式

89542767 / 457人閱讀

  本文主要是詳細(xì)介紹Pyhon的代碼優(yōu)化,以Pyhon的記數(shù)體制做為引進(jìn),詳細(xì)介紹Pyhon的代碼優(yōu)化方法,感興趣的小伙伴來了解一下吧


  什么是內(nèi)存管理模式


  python中建立的目標(biāo)情況下,都會(huì)先進(jìn)行申請(qǐng)基址,再對(duì)目標(biāo)開展復(fù)位,全部目標(biāo)都是會(huì)維護(hù)保養(yǎng)在同一個(gè)


  個(gè)稱為refchain的雙重循環(huán)鏈表中,每一個(gè)數(shù)據(jù)儲(chǔ)存如下所示信息內(nèi)容:


  import sys
  a=[11,22]#對(duì)象被創(chuàng)建
  b=a#對(duì)象被別的變量引用
  c=[111,222,333,a]#對(duì)象被作為元素,放在容器中
  #獲取對(duì)象的引用計(jì)數(shù)
  print(sys.getrefcount(a))#對(duì)象被當(dāng)成參數(shù)傳遞到函數(shù)中


  1.單鏈表中數(shù)據(jù)前后左右數(shù)據(jù)庫的指示針


  2.數(shù)據(jù)的類型


  3.數(shù)據(jù)值


  4.數(shù)據(jù)庫的引用計(jì)數(shù)


  5.數(shù)據(jù)庫的長短(list,dict..)


  import sys


  del b#對(duì)象的別名被顯式的銷毀


  b=999#對(duì)象的一個(gè)別名被賦值給其他對(duì)象


  del c#列表被銷毀(容器被銷毀)


  c.pop()#把列表數(shù)據(jù)最后一個(gè)刪除掉(對(duì)象從容器中被移除)

01.png

  一、引用計(jì)數(shù)體制


  引用計(jì)數(shù)提升:


  1.1目標(biāo)被建立


  1.2目標(biāo)被其他自變量引入(此外取了個(gè)名稱)


  1.3目標(biāo)被認(rèn)為是原素,放到容器里(比如被當(dāng)做原素放到頁面上)


  1


  1.4目標(biāo)被當(dāng)做傳遞數(shù)據(jù)到函數(shù)中


  importsys
  a=[11,22]#目標(biāo)被建立
  b=a#目標(biāo)被其他自變量引入
  c=[111,222,333,a]#目標(biāo)被認(rèn)為是原素,放到容器里
  #獲取對(duì)象的引用記數(shù)
  print(sys.getrefcount(a))#目標(biāo)被當(dāng)做傳遞數(shù)據(jù)到函數(shù)中

  最后的執(zhí)行結(jié)果是,a這個(gè)自變量被引用了4次


  引用計(jì)數(shù)減少:


  目標(biāo)別名被顯式的消毀


  目標(biāo)一個(gè)別名被賦值給其他目標(biāo)(例:比如原來的a=10,被改成a=100,此時(shí)10的引用計(jì)數(shù)就減少了)


  目標(biāo)從容器里被移除,或者容器被消毀(例:目標(biāo)從頁面上被移除,或者列表被消毀)


  一個(gè)引入離開了它的作用域(調(diào)用函數(shù)的時(shí)候傳進(jìn)去的參數(shù),在函數(shù)運(yùn)行結(jié)束后,該參數(shù)的引入即被消毀)


  importsys


  delb#目標(biāo)別名被顯式的消毀


  b=999#目標(biāo)一個(gè)別名被賦值給其他目標(biāo)


  delc#列表被消毀(容器被消毀)


  c.pop()#把列表數(shù)據(jù)最后一個(gè)刪除掉(目標(biāo)從容器里被移除)


  二、數(shù)據(jù)池和緩存文件


  數(shù)據(jù)池分為兩種:小整數(shù)金額池和大整數(shù)金額池


  小整數(shù)金額池(-5到256之間的信息)


  運(yùn)行機(jī)制:Python自動(dòng)將-5~256的整數(shù)金額進(jìn)行了緩存文件到一個(gè)小整數(shù)金額池中,當(dāng)你將這些整數(shù)金額賦值給自變量時(shí),并不會(huì)重新


  創(chuàng)建對(duì)象,而是使用早已建立好的緩存文件目標(biāo),當(dāng)刪除這些數(shù)據(jù)的引入時(shí),也不會(huì)開展回收


  超出-5到256的整數(shù)金額將無法在緩存文件,會(huì)再次創(chuàng)建對(duì)象


  比如:


  針對(duì)超出-5到256的整數(shù)金額將無法在緩存文件,Python會(huì)再次創(chuàng)建對(duì)象,回到id


  #情景1:數(shù)據(jù)為列表,沒有在-5~256的范圍
  >>>a=[11]
  >>>b=[11]
  >>>id(a),id(b)
  (1693226918600,1693231858248)========》id不同
  #情景二:數(shù)據(jù)為整數(shù)金額,在-5~256的范圍
  >>>aa=11
  >>>bb=11
  >>>id(aa),id(bb)
  (140720470385616,140720470385616)id同樣
  #情景三:數(shù)據(jù)沒有在-5~256的范圍
  >>>bb=-7
  >>>aa=-7
  >>>id(aa),id(bb)
  (1843518717904,1843518717776)id不同
  #情景四:數(shù)據(jù)沒有在-5~256的范圍
  >>>a=257
  >>>b=257
  >>>id(a),id(b)
  (2092420910928,2092420911056)id不同

  大整數(shù)金額池(字符串?dāng)?shù)組停留池/intern機(jī)制)


  優(yōu)勢(shì):在建立一個(gè)新的字符串對(duì)象時(shí),首先會(huì)在緩存文件池里邊找是否存在早已存有的值同樣對(duì)象(標(biāo)志符,即只包括數(shù)據(jù)、英文字母、下橫線的字符串?dāng)?shù)組),若是有,則立即拿出來用(引入),防止頻繁地建立和消毀運(yùn)存,提升工作效率


  比如:


  針對(duì)沒有在標(biāo)志符內(nèi)的信息將無法在緩存文件,Python會(huì)再次創(chuàng)建對(duì)象,回到id


  #情景1:
  >>>a='123adsf_'
  >>>b='123adsf_'
  >>>id(a),id(b)
  (61173296,61173296)========》id同樣
  #情景二:
  >>>b1='123adsf_?'
  >>>b2='123adsf_?'
  >>>id(b1),id(b2)
  (61173376,61173416)id不同
  #場(chǎng)景1:數(shù)據(jù)為列表,不在-5~256的范圍
  >>>a=[11]
  >>>b=[11]
  >>>id(a),id(b)
  (1693226918600,1693231858248)========》id不一樣
  #場(chǎng)景二:數(shù)據(jù)為整數(shù),在-5~256的范圍
  >>>aa=11
  >>>bb=11
  >>>id(aa),id(bb)
  (140720470385616,140720470385616)id一樣
  #場(chǎng)景三:數(shù)據(jù)不在-5~256的范圍
  >>>bb=-7
  >>>aa=-7
  >>>id(aa),id(bb)
  (1843518717904,1843518717776)id不一樣
  #場(chǎng)景四:數(shù)據(jù)不在-5~256的范圍
  >>>a=257
  >>>b=257
  >>>id(a),id(b)
  (2092420910928,2092420911056)id不一樣


  緩存機(jī)制


  針對(duì)python中常見內(nèi)嵌基本數(shù)據(jù)類型的緩存文件:


  float:緩存文件100個(gè)目標(biāo)


  list:80個(gè)目標(biāo)


  dict:80個(gè)目標(biāo)


  set:80個(gè)目標(biāo)


  #場(chǎng)景1:
  >>>a='123adsf_'
  >>>b='123adsf_'
  >>>id(a),id(b)
  (61173296,61173296)========》id一樣
  #場(chǎng)景二:
  >>>b1='123adsf_?'
  >>>b2='123adsf_?'
  >>>id(b1),id(b2)
  (61173376,61173416)id不一樣
  數(shù)組:會(huì)依據(jù)數(shù)組數(shù)據(jù)庫的長短,各自緩存文件數(shù)組長短為0-20對(duì)象

02.png

  綜上所述,這篇文章就給大家介紹到這里了,希望可以給大家?guī)韼椭?/p>

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/128852.html

相關(guān)文章

  • 「碼個(gè)蛋」2017年200篇精選干貨集合

    摘要:讓你收獲滿滿碼個(gè)蛋從年月日推送第篇文章一年過去了已累積推文近篇文章,本文為年度精選,共計(jì)篇,按照類別整理便于讀者主題閱讀。本篇文章是今年的最后一篇技術(shù)文章,為了讓大家在家也能好好學(xué)習(xí),特此花了幾個(gè)小時(shí)整理了這些文章。 showImg(https://segmentfault.com/img/remote/1460000013241596); 讓你收獲滿滿! 碼個(gè)蛋從2017年02月20...

    wangtdgoodluck 評(píng)論0 收藏0
  • 【小白+python+selenium庫+圖片爬取+反爬+資料】詳細(xì)新手實(shí)現(xiàn)(01)webdriv

    摘要:且本小白也親身經(jīng)歷了整個(gè)從小白到爬蟲初入門的過程,因此就斗膽在上開一個(gè)欄目,以我的圖片爬蟲全實(shí)現(xiàn)過程為例,以期用更簡單清晰詳盡的方式來幫助更多小白應(yīng)對(duì)更大多數(shù)的爬蟲實(shí)際問題。 前言: 一個(gè)月前,博主在學(xué)過python(一年前)、會(huì)一點(diǎn)網(wǎng)絡(luò)(能按F12)的情況下,憑著熱血和興趣,開始了pyth...

    Half 評(píng)論0 收藏0
  • Python代碼來下載任意指定網(wǎng)易云歌曲(詳細(xì)版)

    摘要:至于怎樣下載付費(fèi)網(wǎng)易云音樂,還是開個(gè)會(huì)員吧,要知道免費(fèi)是最貴的的這個(gè)道理。代碼寫完了,那還等什么,運(yùn)行一下裝逼啊這下好了,裝逼失敗,被網(wǎng)易云認(rèn)出來我是爬蟲的,那我試試加下請(qǐng)求頭結(jié)果加了還是一個(gè)樣,這個(gè)也算是個(gè)巨坑吧。 前兩天教了大家如何在控制臺(tái)上找到真實(shí)的mp3播放地址,但是不可以下載付費(fèi)的,因?yàn)橹荒芟螺d可播放的歌曲。至于怎樣下載付費(fèi)網(wǎng)易云音樂,還是開個(gè)會(huì)員吧,要知道免費(fèi)是最貴的的這個(gè)...

    wwolf 評(píng)論0 收藏0
  • 力扣-----python兩數(shù)之和問題(詳細(xì),適合初學(xué)者)

    摘要:兩數(shù)之和暴力求解首先我們需要有一個(gè)目標(biāo)列表,并且有一個(gè)目標(biāo)值。如果列表中的某兩個(gè)數(shù)之和,正好等于我們的目標(biāo)值,那么就會(huì)反回那兩個(gè)數(shù)的索引。 兩數(shù)之和----------暴力求解 首先我們需要有一個(gè)目標(biāo)列表,并且有一個(gè)目標(biāo)值。如果列表中的某兩個(gè)數(shù)之和,正好等于我們的目標(biāo)值,那么就會(huì)反回那兩個(gè)數(shù)...

    raledong 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<