python中g(shù)etsizeof和asizeof的區(qū)別小結(jié)
sys.getsizeof (Python 內(nèi)置)
1、來源: Python 標(biāo)準(zhǔn)庫的 sys 模塊
2、功能: 返回對象的"直接"內(nèi)存占用,不包括對象引用的其他對象
3、特點(diǎn):
3.1、只計(jì)算對象本身的大小
3.2、對于容器類型(list, dict等),不計(jì)算容器內(nèi)元素的大小
3.3、是Python內(nèi)置函數(shù),無需額外安裝
pympler.asizeof.asizeof (第三方庫)
1、來源: Pympler 庫的 asizeof 模塊
2、功能: 遞歸計(jì)算對象及其所有引用對象的總內(nèi)存占用
3、特點(diǎn):
3.1、遞歸計(jì)算所有引用對象的大小
3.2、對于容器類型,會計(jì)算容器內(nèi)所有元素及其引用的大小
3.3、需要安裝 pympler 包 (pip install pympler)
使用場景
1、使用 sys.getsizeof 當(dāng)你想知道對象本身的內(nèi)存占用
2、使用 asizeof.asizeof 當(dāng)你想知道對象及其所有引用對象的完整內(nèi)存占用
對于復(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的對像是一樣的,也就是說getsizeof獲取的不是這個列表以及所有內(nèi)容在內(nèi)存中的有效占用空間,而僅僅是這個列表表頭的占用空間。
這是表頭,即aa,選中的是他的元素表
這里大概就是存儲相關(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)志著有多少個元素,第二行后段仍是元素指針的地址
這里的指針應(yīng)該是單純的信息,前后無其他描述信息,靠著上上圖中的元素?cái)?shù)量索引
第一次增加元素,賦值為b,第二次增加aa[1]的長度,但aa的size未變,aa的size至與元素?cái)?shù)量有關(guān),也可能與元素類型有關(guān)。
看到列表了,里面有個函數(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JupyterNotebook 輸出窗口的顯示效果調(diào)整方法
這篇文章主要介紹了JupyterNotebook 輸出窗口的顯示效果調(diào)整方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04深入解析python中的實(shí)例方法、類方法和靜態(tài)方法
這篇文章主要介紹了python中的實(shí)例方法、類方法和靜態(tài)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03Python實(shí)現(xiàn)PDF到Word文檔的高效轉(zhuǎn)換
這篇文章主要為大家詳細(xì)介紹了如何使用Python編程語言,結(jié)合庫和工具,將PDF文件轉(zhuǎn)換為可編輯的Word文檔,使文檔的編輯變得方便高效,需要的可以參考下2024-01-01TensorFlow梯度求解tf.gradients實(shí)例
今天小編就為大家分享一篇TensorFlow梯度求解tf.gradients實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02Python networkx包的實(shí)現(xiàn)
這篇文章主要介紹了Python networkx包的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02使用Python實(shí)現(xiàn)批量發(fā)送個性化郵件
在現(xiàn)代工作環(huán)境中,我們經(jīng)常需要向多個收件人發(fā)送個性化的郵件,因此本文小編為大家整理了Python實(shí)現(xiàn)批量發(fā)送個性化郵件的示例代碼,希望對大家有所幫助2023-11-11一文詳細(xì)介紹Python中的OrderedDict對象
OrderedDict是Python標(biāo)準(zhǔn)庫collections模塊的一部分,下面這篇文章主要給大家介紹了關(guān)于Python中OrderedDict對象的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-08-08Python實(shí)戰(zhàn)之OpenCV實(shí)現(xiàn)貓臉檢測
今天給大家?guī)淼氖顷P(guān)于Python的相關(guān)知識,文章圍繞著OpenCV實(shí)現(xiàn)貓臉檢測展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06