如何在python中使用sys.getsizeof

  介绍

本篇文章给大家分享的是有关如何在python中使用sys.getsizeof,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

(1) sys.getsizeof只计算实际使用的内存大小,引用所消耗的内存大小不计算。

(2)系统。getsizeof只能作为计算内存大小的参考~

这里有一个问题,为什么python各个数据类型占用大小和c++中不一致呢?

这里本质上是由python的实现所决定的,python代码在运行的时候会由python解析器执行,具体会解析为c语言的某种结构,也就是说,python中的一个int(或其他)映射到c语言中会是一种复杂结构体。

以python的int为例说明,下面是python的int在c中的具体形式:

typedef  struct  {   ,,PyObject_HEAD   ,,,long  ob_ival;   },PyIntObject; struct  _longobject  {   ,,,long  ob_refcnt;,,//,引用计数   ,,,PyTypeObject  * ob_type;,//变量类型   ,,,size_t  ob_size;,,//实际占用内容大小   ,,,long  ob_digit[1];,,//存储的实际python值   };

发现没有,python实际的值只是相应C结构中的一个属性,难怪python的int占28个字节,而C语言只需要4个字节,因为python还存储了很多相关的其他信息!其他信息是实际数值的6倍大小!

发现没有,python实际的值只是相应C结构中的一个属性,难怪python的int占28个字节,而C语言只需要4个字节,因为python还存储了很多相关的其他信息!其他信息是实际数值的6倍大小!

ps:想要精准控制内存大小,使用c++或Java吧~者

<强>补充:使用系统。getsizeof查看python对象的内存占用

使用系统。getsizeof方法可以查看python对象的内存占用,单位:字节(字节)

实际上是调用了__sizeof__方法:

拷贝[35]:import 系统      [36]:拷贝,sys.getsizeof (& # 39; hello  & # 39;)   [36]:60      [37]:拷贝,& # 39;hello  & # 39; .__sizeof__ ()   出[37]:60

有些数据类型在Python3和Python2中占用的内存是不同的,例如范围:

#, Python3   [38]:拷贝,sys.getsizeof(范围(999))   [38]:48      [39]:拷贝,sys.getsizeof (iter(范围(999)))   [39]:48      #,python2   在祝辞祝辞,sys.getsizeof(范围(999))   8064   在祝辞祝辞,sys.getsizeof (iter(范围(999)))   64年

关于这个值是怎么算出来的,有待研究~

暂时已知:这个值包括该对象的数值,签名(包括数据类型,参数,调用方式等)等一系列数据所占总内存。可变对象所占内存可能极小,因为对象是指针,指向很大的数据。

拷贝[65]:,s =sys.getsizeof      拷贝[66]:,(1)   [66]:28      [67]:拷贝,s (11)   [67]:28      [68]:拷贝,年代(11111111)   [68]:28      [69]:拷贝,年代(1111111111)   [69]:,32 python的五大特点是什么

python的五大特点:1。简单易学,开发程序时,专注的是解决问题,而不是搞明白语言本身。2。面向对象,与其他主要的语言如c++和Java相比,Python以一种非常强大又简单的方式实现面向对象编程。3。可移植性,Python程序无需修改就可以在各种平台上运行。4。解释性,Python语言写的程序不需要编译成二进制代码,可以直接从源代码运行程序。5。开源,Python是牙线(自由/开放源码软件)之一。

以上就是如何在Python中使用sys.getsizeof,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

如何在python中使用sys.getsizeof