Python中对象的内存使用(一)

2020-06-19 00:00:00 字节 链接 整数 阅读 延伸
本文于微信公众号「Python之美」mp.weixin.qq.com/s/ruRV

近在了解 Python 语言中各种数据结构的使用的内存情况,写几篇文章和大家分享。

计算机存储单位

先铺垫一点基础知识。计算机存储单位一般用 Bit, Byte, KB, MB, GB, TB, PB 等表示。他们由小到大递增:

  1. Bit (比特)。Bit 是 Binary digit(二进制数字)的缩写,小的存储信息单位,存放一位二进制数,即 0 或 1。
  2. Byte (字节)。8 个二进制位 (Bit) 为一个字节 (B),字节是常用的 存储容量 单位。
  3. KB (Kilobyte)。1KB = 1024Byte
  4. MB (Megabyte,简称「兆」)。1MB = 1024KB
  5. GB (Gibibyte)。1GB = 1024MB
  6. TB (Terabyte)。1TB = 1024GB
  7. PB (Petabyte)。1PB = 1024TB

当然还有更大级别的单位,不常用就不说了。

获得 Python 对象占用的内存方法

在 Python 中 一切皆为对象,就不是象 C 语言中 int 占用 4 个字节这么简单了,Python 提供了 sys.getsizeof 获取对象所占用的字节大小。它支持任何类型的对象 (本文例子都运行在 Python 3.8 下):

 venv/bin/ipython
Python 3.8.b3+ (heads/3.8:9bedb8c9e6, Aug 13 2019, 10:49:01)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.7. -- An enhanced Interactive Python. Type '?' for help.

In : import sys

In : sys.getsizeof ('a')
Out: 50

In : sys.getsizeof (1)
Out: 28

In : a = 1

In : a.__sizeof__()
Out: 28

相关文章