真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python內(nèi)存分配-創(chuàng)新互聯(lián)

python中對象內(nèi)存分配的秘密:
http://note.youdao.com/noteshare?id=4f2a12ca09e6ec21d3ea03d05e2744e9

創(chuàng)新互聯(lián)主營朝陽縣網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app軟件定制開發(fā),朝陽縣h5小程序開發(fā)搭建,朝陽縣網(wǎng)站營銷推廣歡迎朝陽縣等地區(qū)企業(yè)咨詢

sys模塊是Python比較基礎(chǔ)且十分重要的模塊
功能: 提供程解釋器使用(或者由他維護(hù))的變量,以及和解釋器交互的函數(shù)

sys模塊中的getsizeof()函數(shù)用戶獲取對象所占直接內(nèi)存字節(jié)大小(byte),不計(jì)算對象內(nèi)部引用對象占用內(nèi)存大小
1.首先我們驗(yàn)證一下上面這句話;

In [2]: import sys                                                                                                                                                        
In [3]: a = [1,2]                                                                                                                                                         
In [4]: b = [a,a]                                                                                                                                                         
In [5]: sys.getsizeof(a)                                                                                                                                                  
Out[5]: 80
In [6]: sys.getsizeof(b)                                                                                                                                                  
Out[6]: 80
In [7]: a                                                                                                                                                                 
Out[7]: [1, 2]
In [8]: b                                                                                                                                                                 
Out[8]: [[1, 2], [1, 2]]
可以看到上面數(shù)組,a,b兩個列表內(nèi)部只有兩個元素,雖然b列表引用了列表a,但是它所占字節(jié)大小a一樣,這樣就說明了getsizeof()方法是計(jì)算當(dāng)前對象直接所占內(nèi)存字節(jié)大小,不會計(jì)算其內(nèi)部引用.

2,python中空對象所占內(nèi)存字節(jié)

In [4]: sys.getsizeof('')   # 空字符                                                                                                                                                
Out[4]: 49
In [5]: sys.getsizeof([])   # 空列表                                                                                                                                              
Out[5]: 64
In [6]: sys.getsizeof({})   # 空字典                                                                                                                                              
Out[6]: 240
In [7]: sys.getsizeof(())   # 空元組                                                                                                                                             
Out[7]: 48
In [8]: sys.getsizeof(set())# 空集合                                                                                                                                            
Out[8]: 224

占用內(nèi)存字節(jié)對象排序: 基礎(chǔ)數(shù)字 < 空元祖 < 空字符串 < 空列表 < 空集合 < 空字典
為什么空對象也會占用內(nèi)存?
解釋: 我們可以理解為上述對象都是容器,python在創(chuàng)建的時候分配一部份內(nèi)存用于對象本身信息的記錄,比如(容器結(jié)構(gòu),引用計(jì)數(shù),使用信息等),另一部分用于預(yù)分配內(nèi)存

3.Boolen值占用內(nèi)存字節(jié)數(shù)

In [15]: sys.getsizeof(0)                                                                                                                                                 
Out[15]: 24
In [16]: sys.getsizeof(False)                                                                                                                                             
Out[16]: 24
In [17]: sys.getsizeof(1)                                                                                                                                                 
Out[17]: 28
In [18]: sys.getsizeof(True)                                                                                                                                              
Out[18]: 28
通過上面樣例我們可以看到,布爾值對象的內(nèi)存所占字節(jié)大小和數(shù)字0,1是一樣的,應(yīng)為在Boolen中True和1,False和0,代表的含義是一樣的,只是表現(xiàn)形式不一樣

4.python的內(nèi)存分配機(jī)制:
(1).超額分配機(jī)制:對象在申請內(nèi)存時候,會多分配一部份內(nèi)存,當(dāng)有新的元素加入到對象中,就不會再去請求內(nèi)存分配,直接使用之前超額分配的內(nèi)存,這樣的話就保證了對象總是會有多余的內(nèi)存容納新加入的元素,而不用在加入對象時候再去申請內(nèi)存操作,提高對象的內(nèi)存分配性能.
(2).非均勻分配機(jī)制; 在分配內(nèi)存的時候每次分配的內(nèi)存大小是不一樣的,保證了不同元素加入時候,對象中超額的內(nèi)存總是能夠容納新的元素,不用再加入的時候去申請內(nèi)存.

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


新聞名稱:Python內(nèi)存分配-創(chuàng)新互聯(lián)
當(dāng)前URL:http://weahome.cn/article/cdojsd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部