本篇文章给大家分享的是有关如何在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,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。