python中g(shù)etsizeof和asizeof的區(qū)別小結(jié)
sys.getsizeof (Python 內(nèi)置)
1、來源: Python 標(biāo)準(zhǔn)庫的 sys 模塊
2、功能: 返回對(duì)象的"直接"內(nèi)存占用,不包括對(duì)象引用的其他對(duì)象
3、特點(diǎn):
3.1、只計(jì)算對(duì)象本身的大小
3.2、對(duì)于容器類型(list, dict等),不計(jì)算容器內(nèi)元素的大小
3.3、是Python內(nèi)置函數(shù),無需額外安裝
pympler.asizeof.asizeof (第三方庫)
1、來源: Pympler 庫的 asizeof 模塊
2、功能: 遞歸計(jì)算對(duì)象及其所有引用對(duì)象的總內(nèi)存占用
3、特點(diǎn):
3.1、遞歸計(jì)算所有引用對(duì)象的大小
3.2、對(duì)于容器類型,會(huì)計(jì)算容器內(nèi)所有元素及其引用的大小
3.3、需要安裝 pympler 包 (pip install pympler)
使用場景
1、使用 sys.getsizeof 當(dāng)你想知道對(duì)象本身的內(nèi)存占用
2、使用 asizeof.asizeof 當(dāng)你想知道對(duì)象及其所有引用對(duì)象的完整內(nèi)存占用
對(duì)于復(fù)雜數(shù)據(jù)結(jié)構(gòu),asizeof 通常能給出更準(zhǔn)確的總內(nèi)存使用情況。
In [88]: aa=["a"] In [89]: getsizeof(aa) Out[89]: 64 In [90]: hex(id(aa)) Out[90]: '0x24ca6152480' In [91]: getsizeof(aa[0]) Out[91]: 50 In [92]: hex(id(aa[0])) Out[92]: '0x24ca2104cf0'
1、getsizeof和id的對(duì)像是一樣的,也就是說getsizeof獲取的不是這個(gè)列表以及所有內(nèi)容在內(nèi)存中的有效占用空間,而僅僅是這個(gè)列表表頭的占用空間。

這是表頭,即aa,選中的是他的元素表

這里大概就是存儲(chǔ)相關(guān)指針的一段空間

這是元素aa[0]
In [93]: aa.__iadd__("b")
Out[93]: ['a', 'b']
In [95]: getsizeof(aa)
Out[95]: 96
In [96]: hex(id(aa))
Out[96]: '0x24ca6152480'
In [98]: aa[1]="bb"
In [100]: getsizeof(aa)
Out[100]: 96

指針地址沒變,但是長度變了,至于后面多出的長度描述了什么,未知。但第二行標(biāo)志著有多少個(gè)元素,第二行后段仍是元素指針的地址

這里的指針應(yīng)該是單純的信息,前后無其他描述信息,靠著上上圖中的元素?cái)?shù)量索引

第一次增加元素,賦值為b,第二次增加aa[1]的長度,但aa的size未變,aa的size至與元素?cái)?shù)量有關(guān),也可能與元素類型有關(guān)。
看到列表了,里面有個(gè)函數(shù)
__sizeof__(self, /) Return the size of the list in memory, in bytes.
好奇探究,又做了無意義的事!
到此這篇關(guān)于python中g(shù)etsizeof和asizeof的區(qū)別小結(jié)的文章就介紹到這了,更多相關(guān)python getsizeof asizeof 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python GUI庫圖形界面開發(fā)之PyQt5窗口背景與不規(guī)則窗口實(shí)例
這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5窗口背景與不規(guī)則窗口實(shí)例,需要的朋友可以參考下2020-02-02
Python實(shí)現(xiàn)批量讀取word中表格信息的方法
這篇文章主要介紹了Python實(shí)現(xiàn)批量讀取word中表格信息的方法,可實(shí)現(xiàn)針對(duì)word文檔的讀取功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07
python用線性回歸預(yù)測(cè)股票價(jià)格的實(shí)現(xiàn)代碼
這篇文章主要介紹了python用線性回歸預(yù)測(cè)股票價(jià)格的實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09

