python源码深度剖析_Python 源码深度剖析
qq_六月的古明地覺_0
一年前閱讀過(guò)關(guān)于源碼剖析的書, 不過(guò)是基于Python2.5的, 很高興遇到了Python3.x的源碼剖析, 正在對(duì)著源碼一點(diǎn)一點(diǎn)剖析, 感謝老師出了這個(gè)專欄。
但還是遇到了一個(gè)問(wèn)題, 記得您說(shuō): "那么,被刪除的存儲(chǔ)單元如何復(fù)用呢?Python 壓根就沒想費(fèi)這個(gè)勁,直接使用新的不就好了嗎?"。
不過(guò)我隱約記得之前在看那本書的時(shí)候, 記得書上畫了一張圖, 描述entry的unused態(tài)、active態(tài)、dummy態(tài)三者的關(guān)系。dummy態(tài)無(wú)法轉(zhuǎn)為unused態(tài), 但dummy態(tài)和active態(tài)的entry之間的關(guān)系是一個(gè)雙向箭頭。
可不可以這樣理解,Python默認(rèn)是不會(huì)管處于dummy態(tài)的entry的, 只是做了一個(gè)邏輯刪除, 但是內(nèi)存還在占用這。
如果來(lái)了一個(gè)新的entry, 并且沒有發(fā)生沖突, 那么Python就存在新的位置上。但如果發(fā)生了沖突, 沿著"沖突探測(cè)鏈"查找的時(shí)候, 碰巧發(fā)現(xiàn)了一個(gè)處于dummy態(tài)的entry, 那么就把這個(gè)處于dummy態(tài)的entry給換成新存儲(chǔ)的entry。
此時(shí)entry由dummy態(tài)變成了active態(tài), 只不過(guò)此時(shí)不一定是同一個(gè)entry了。可以這樣理解嗎
講師回答 / fasionchan
完全正確。dummy狀態(tài)其實(shí)也是特殊的unused,之所以不能轉(zhuǎn)成直接轉(zhuǎn)成unused是因?yàn)樾枰S護(hù)沖突探測(cè)鏈。另外,Python 3內(nèi)建對(duì)象與Python 2相比變化很大,特別是dict、str等對(duì)象,學(xué)習(xí)建議以最新版本源碼為準(zhǔn)。
總結(jié)
以上是生活随笔為你收集整理的python源码深度剖析_Python 源码深度剖析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: select * from ( uni
- 下一篇: python百度文库源码_Python源