最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python 中sys.getsizeof的用法說(shuō)明

 更新時(shí)間:2021年05月25日 11:51:53   作者:kelly學(xué)挖掘  
這篇文章主要介紹了python 中sys.getsizeof的用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

科班出身的碼畜一直被灌輸一條上帝圣經(jīng):“一個(gè)int占4個(gè)字節(jié),一個(gè)char占1個(gè)字節(jié),一個(gè)float占4個(gè)字節(jié)。。?!保?/p>

今天看下了python的getsizeof函數(shù),發(fā)現(xiàn)python中各個(gè)基本數(shù)據(jù)類(lèi)型(對(duì)象)占用的內(nèi)存大小和c++/Java完全不一樣~

前提概述:python中一切都是對(duì)象,so python中其實(shí)根本不存在int float這些類(lèi)型,int其實(shí)是一個(gè)python對(duì)象。

int:28float:24string:54list():64{}:288ste():224

此外,

(1)sys.getsizeof只計(jì)算實(shí)際使用的內(nèi)存大小,引用所消耗的內(nèi)存大小不計(jì)算。

(2)sys.getsizeof只能作為計(jì)算內(nèi)存大小的參考~

這里有一個(gè)問(wèn)題,為什么python各個(gè)數(shù)據(jù)類(lèi)型占用大小和c++中不一致呢?

這里本質(zhì)上是由python的實(shí)現(xiàn)所決定的,python代碼在運(yùn)行的時(shí)候會(huì)由python解析器執(zhí)行,具體會(huì)解析為C語(yǔ)言的某種結(jié)構(gòu)。也就是說(shuō),python中的一個(gè)int(或其他)映射到c語(yǔ)言中會(huì)是一種復(fù)雜結(jié)構(gòu)體。

以python的int為例說(shuō)明,下面是python的int在C中的具體形式:

typedef struct {
    PyObject_HEAD
    long ob_ival;
} PyIntObject;
struct _longobject {
    long ob_refcnt;  // 引用計(jì)數(shù)
    PyTypeObject *ob_type; //變量類(lèi)型
    size_t ob_size;  //實(shí)際占用內(nèi)容大小
    long ob_digit[1];  //存儲(chǔ)的實(shí)際python值
};

發(fā)現(xiàn)沒(méi)有,python實(shí)際的值只是相應(yīng)C結(jié)構(gòu)中的一個(gè)屬性,難怪python的int占28個(gè)字節(jié),而C語(yǔ)言只需要4個(gè)字節(jié),因?yàn)閜ython還存儲(chǔ)了很多相關(guān)的其他信息!其他信息是實(shí)際數(shù)值的6倍大小!

發(fā)現(xiàn)沒(méi)有,python實(shí)際的值只是相應(yīng)C結(jié)構(gòu)中的一個(gè)屬性,難怪python的int占28個(gè)字節(jié),而C語(yǔ)言只需要4個(gè)字節(jié),因?yàn)閜ython還存儲(chǔ)了很多相關(guān)的其他信息!其他信息是實(shí)際數(shù)值的6倍大小!

ps:想要精準(zhǔn)控制內(nèi)存大小,使用c++或者Java吧~

補(bǔ)充:使用 sys.getsizeof 查看 python 對(duì)象的內(nèi)存占用

使用 sys.getsizeof 方法可以查看 python 對(duì)象的內(nèi)存占用,單位:字節(jié) (byte)

實(shí)際上是調(diào)用了 __sizeof__ 方法:

In [35]: import sys

In [36]: sys.getsizeof('hello world')
Out[36]: 60

In [37]: 'hello world'.__sizeof__()
Out[37]: 60

有些數(shù)據(jù)類(lèi)型在 Python3 和 Python2 中占用的內(nèi)存是不同的,

例如 range :

# python3
In [38]: sys.getsizeof(range(999))
Out[38]: 48

In [39]: sys.getsizeof(iter(range(999)))
Out[39]: 48

# python2
>>> sys.getsizeof(range(999))
8064
>>> sys.getsizeof(iter(range(999)))
64

關(guān)于這個(gè)值是怎么算出來(lái)的,有待研究~

暫時(shí)已知:這個(gè)值包括該對(duì)象的數(shù)值、簽名(包括數(shù)據(jù)類(lèi)型、參數(shù)、調(diào)用方式等)等一系列數(shù)據(jù)所占總內(nèi)存。可變對(duì)象所占內(nèi)存可能極小,因?yàn)閷?duì)象是指針,指向很大的數(shù)據(jù)。

In [65]: s = sys.getsizeof

In [66]: s(1)
Out[66]: 28

In [67]: s(11)
Out[67]: 28

In [68]: s(11111111)
Out[68]: 28

In [69]: s(1111111111)
Out[69]: 32

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python中如何替換字典中的值

    Python中如何替換字典中的值

    這篇文章主要介紹了Python中替換字典中的值,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • python中的format格式化、填充與對(duì)齊、數(shù)字格式化方式

    python中的format格式化、填充與對(duì)齊、數(shù)字格式化方式

    format函數(shù)是Python中強(qiáng)大的字符串格式化方法,它允許程序員通過(guò)大括號(hào){}來(lái)為字符串中的插入點(diǎn)占位,并通過(guò)傳入?yún)?shù)進(jìn)行替換,{0}、{1}分別代表不同的參數(shù)
    2024-09-09
  • python使用win32com在百度空間插入html元素示例

    python使用win32com在百度空間插入html元素示例

    這篇文章主要介紹了python使用win32com在百度空間插入html元素的示例,大家參考使用吧
    2014-02-02
  • Python 26進(jìn)制計(jì)算實(shí)現(xiàn)方法

    Python 26進(jìn)制計(jì)算實(shí)現(xiàn)方法

    這篇文章主要介紹了Python 26進(jìn)制計(jì)算實(shí)現(xiàn)方法,涉及Python字符串與數(shù)值計(jì)算的相關(guān)操作技巧,需要的朋友可以參考下
    2015-05-05
  • 三大Python操作Excel文件擴(kuò)展庫(kù)的使用指南

    三大Python操作Excel文件擴(kuò)展庫(kù)的使用指南

    在當(dāng)今數(shù)據(jù)驅(qū)動(dòng)的工作環(huán)境中,Excel 文件操作已成為 Python 開(kāi)發(fā)者必備的核心技能之一,本文將深入解析三個(gè)優(yōu)秀的 Python Excel 庫(kù):openpyxl、pandas 和 Free Spire.XLS for Python,希望對(duì)大家有所幫助
    2025-07-07
  • python opencv 圖像拼接的實(shí)現(xiàn)方法

    python opencv 圖像拼接的實(shí)現(xiàn)方法

    高級(jí)圖像拼接也叫作基于特征匹配的圖像拼接,拼接時(shí)消去兩幅圖像相同的部分,實(shí)現(xiàn)拼接合成全景圖。這篇文章主要介紹了python opencv 圖像拼接,需要的朋友可以參考下
    2019-06-06
  • Python利用百度地圖獲取兩地距離(附demo)

    Python利用百度地圖獲取兩地距離(附demo)

    本文主要介紹了Python利用百度地圖獲取兩地距離,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • Python中OpenCV?Tutorials?20??高動(dòng)態(tài)范圍成像的實(shí)現(xiàn)步驟

    Python中OpenCV?Tutorials?20??高動(dòng)態(tài)范圍成像的實(shí)現(xiàn)步驟

    這篇文章主要介紹了OpenCV?Tutorials?20?-?高動(dòng)態(tài)范圍成像,本文還給大家展示了一種稱(chēng)為曝光融合的替代方法,它可以產(chǎn)生低動(dòng)態(tài)范圍的圖像,需要的朋友可以參考下
    2022-06-06
  • 將 Ubuntu 16 和 18 上的 python 升級(jí)到最新 python3.8 的方法教程

    將 Ubuntu 16 和 18 上的 python 升級(jí)到最新 python3.8 的方法教程

    這篇文章主要介紹了如何將 Ubuntu 16 和 18 上的 python 升級(jí)到最新 3.8 版,本文通過(guò)實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Python字符串對(duì)齊方法使用(ljust()、rjust()和center())

    Python字符串對(duì)齊方法使用(ljust()、rjust()和center())

    這篇文章主要介紹了Python字符串對(duì)齊方法使用(ljust()、rjust()和center()),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04

最新評(píng)論

手游| 富源县| 乌鲁木齐市| 湾仔区| 奉新县| 湄潭县| 图木舒克市| 宣武区| 北宁市| 泰顺县| 宣恩县| 云和县| 丰县| 视频| 门源| 西城区| 尤溪县| 易门县| 京山县| 汤阴县| 南昌县| 女性| 衡山县| 卓资县| 宜兰县| 北碚区| 本溪市| 余庆县| 洪洞县| 广汉市| 响水县| 得荣县| 中阳县| 新兴县| 五寨县| 昌乐县| 延川县| 漳州市| 得荣县| 西乌| 南陵县|