+14 投票
分类:Python编程与实践 | 用户: (350 分)

2 个回答

+2 投票
用户: (45.4k 分)

可以用sys模块中提供函数getsizeof()来计算Python对象占用内存的大小:

返回对象的大小(以字节为单位)。该对象可以是任何类型。所有内建对象返回的结果都是正确的,但对于第三方扩展不一定正确,因为这与具体实现有关。

只计算直接分配给对象的内存消耗,不计算它所引用的对象的内存消耗。

>>> from sys import getsizeof
>>> getsizeof(123)
24
>>> getsizeof('123')
40

 

+2 投票
用户: (5.8k 分)
是不一样的,可以用内置函数  .__sizeof__()来得到占用内存的大小;以下代码得到的分别是28和52 a=123 s='123' print(a.__sizeof__()) print(s.__sizeof__()) 可以看出,整形123占用28个byte,字符串形占用52个byte,python中int类型是动态长度的,理论上可以支持无限大的数字,关于int的类型大小可以看一下这篇文章https://blog.csdn.net/mjl960108/article/details/80191308 字符串占用内存大小跟字符的编码有很大关系,一个字符串的每个字符在占用空间大小是相同的,取决于字符串中的最大字符。Python使用了三种不同单位长度来表示字符串:每个字符 1 个字节(所有字符在ASCII码范围内);每个字符 2 个字节(字符串中存在需要占用两个字节的字符例如中文字符);每个字符 4 个字节(含有emoji表情等特殊符号)。倘若将一个纯ASCII码文本存入字符串,再向其中加入增加一个汉字,那么原本纯ASCII码字符占用的内存大小将扩大二倍。希望这些对你有帮助~
欢迎来到 爱可可Q&A ,有什么问题可以尽管在这里提问,你将会收到其他成员的热心回答。
...