基本类型占用的内存

  • 类型
  • # -*- coding: utf-8 -*-
    # @Time : 2019-12-19 11:16
    # @Author : binger import sys a = None
    b = 1000.2311
    c = 1000
    d = True
    e = ""
    f = ()
    g = []
    h = set([])
    i = {} print(" %s size is %d " % (type(a), sys.getsizeof(a)))
    print(" %s size is %d " % (type(b), sys.getsizeof(b)))
    print(" %s size is %d " % (type(c), sys.getsizeof(c)))
    print(" %s size is %d " % (type(d), sys.getsizeof(d)))
    print(" %s size is %d " % (type(e), sys.getsizeof(e)), sys.getsizeof(""))
    print(" %s size is %d " % (type(f), sys.getsizeof(f)), sys.getsizeof((1,)))
    print(" %s size is %d " % (type(g), sys.getsizeof(g)), sys.getsizeof([1, ]))
    print(" %s size is %d " % (type(h), sys.getsizeof(h)), sys.getsizeof(set([1, ])))
    print(" %s size is %d " % (type(i), sys.getsizeof(i)), sys.getsizeof({1: 1}))
  • 结果:
    内存大小排行: None < float < int = bool < str < tuple < list < set < dict
  •  <class 'NoneType'> size is 16 Byte
    <class 'float'> size is 24 Byte
    <class 'int'> size is 28 Byte
    <class 'bool'> size is 28 Byte
    <class 'str'> size is 49 Byte 51
    <class 'tuple'> size is 56 Byte 64
    <class 'list'> size is 72 Byte 80
    <class 'set'> size is 232 Byte 232
    <class 'dict'> size is 248 Byte 248

分析:

  • int和float:

    • int和float的64位系统中的 Python 3 内存消耗:int > float
    • 间接费用(PyObject_HEAD)增加了一倍,但整数的大小从32位变为64位,而浮点数(双精度)的大小仍为64:
    • 32位
      int:开销= 10字节,值= 4字节
      float:开销= 8字节,value = 8字节 64位
      int:开销= 20字节,值= 8字节
      float:开销= 16个字节,值= 8个字节
    • 在64位 Python 2 中 int 和 float 均为 24B。但是 int 不包含 long类型(28B)
  • 字典与链表
from bintrees import bintree
import uuid, time, sys
import random def create_uuid(msg):
src_uuid = uuid.uuid4()
name = "{}{}".format(time.time(), msg)
return uuid.uuid3(src_uuid, name=name).hex a = {create_uuid(i): random.randint(0, 10) for i in range(2000)}
b = {i: i for i in range(2000)}
ring = bintree.BinaryTree()
c = [ring.insert(create_uuid(i), i) for i in range(2000)]
ring2 = bintree.BinaryTree()
d = [ring2.insert(i, i) for i in range(2000)] print("字典1", sys.getsizeof(a))
print("字典2", sys.getsizeof(b))
print("二叉树:", sys.getsizeof(c))
print("二叉树:", sys.getsizeof(d))
    • 结果:
字典1 73832
字典2 73832
二叉树: 16568
二叉树: 16568

Python3 基本类型在64位上的占用内存情况的更多相关文章

  1. Loadrunner11无法在win7 64位上启用ie解决办法

    Loadrunner11无法在win7 64位上启用ie解决办法 1.loadrunner11在win7 64位上默认启用的是32位的那个IE浏览器,路径:C:\Program Files (x86) ...

  2. 在windows7 64位上安装selenium2library问题解决

    今天发现了windows7 64位上安装selenium2Libaray的问题,下载exe文件安装不行.就切换成了半自动模式.  方案如下: 1.首先下载pip安装.(因为要用pip来安装 selen ...

  3. 在 CentOS 7.5 64位上使用 yum 安装 MySQL 8.0

    前段时间在 CentOS 7.5 64位上安装 MySQL 8.0.查了些资料,在这里记录一下详细的安装和设置步骤. 一.安装 使用yum安装MySQL之前需要先下载对应的.rpm文件,下载方法: 去 ...

  4. 第十七章——配置SQLServer(2)——32位和64位系统中的内存配置

    原文:第十七章--配置SQLServer(2)--32位和64位系统中的内存配置 前言: 本文讲述32位和64位系统中的内存配置,在SQLServer 2005/2008中,DBA们往往尝试开启AWE ...

  5. [你必须知道的.NET] 第八回:品味类型---值类型与引用类型(上)-内存有理

    原文地址:http://kb.cnblogs.com/page/42318/ 系列文章导航: [你必须知道的.NET] 开篇有益 [你必须知道的.NET] 第一回:恩怨情仇:is和as [你必须知道的 ...

  6. windows server 2003(64位)上利用iis6部署32位应用

    如果直接部署,会出现如下问题: 试图加载格式不正确的程序. (Exception from HRESULT: 0x8007000B) 解决办法 1.命令行键入: cscript.exe %SYSTEM ...

  7. WIN7 64位上 MYSQL的ODBC一些个人理解

    最近电脑中毒了,无奈之下把32位的xp换成了64位的win7,无聊耗时的搭完开发环境,装了vs6.0(忽略掉一切的不兼容),装完64位的mysql(“mysql-5.6.10-winx64.zip”) ...

  8. Qt(MinGW版)在win7 64位上无法播放视频解决方案

    [原因分析] Qt自带的MinGW是32位版本,不支持64位的ffmpeg(解码器). 无法播放视频,问题就出在opencv_ffmpeg2411_64.dll(opencv\bin\)上. [解决方 ...

  9. Ubuntu 14.04 64位上安装wps office软件(转http://m.blog.csdn.net/blog/yhc13429826359/24179933)

    废话少说,只给出方法供各位参考!wps for Linux版本已经有两三年没有大的动作,当然其他平台,比如windows,Android,ios上的wps效果还是很赞的说. 下面是我成功安装的步骤: ...

随机推荐

  1. 力扣(LeetCode)求众数 个人题解

    给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在众数. 示例 1: 输入: [3,2,3] 输出: 3 ...

  2. 【搞定 Java 并发面试】面试最常问的 Java 并发基础常见面试题总结!

    本文为 SnailClimb 的原创,目前已经收录自我开源的 JavaGuide 中(61.5 k Star![Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识.欢迎 Sta ...

  3. PHP常用的三种输出语句

    今天介绍一下PHP三种常用的输出语句: 1.echo语句 2.print_r语句 3.var_dump语句 echo语句:可以输出数字.字符串 例: echo 12: echo 'aswedf'; e ...

  4. python gui tkinter快速入门教程 | python tkinter tutorial

    本文首发于个人博客https://kezunlin.me/post/d5c57f56/,欢迎阅读最新内容! python tkinter tutorial Guide main ui messageb ...

  5. [ubuntu篇] 使用Hexo建立个人博客,自定义域名https加密,搜索引擎google,baidu,360收录

    为了更好的阅读体验,欢迎阅读原文.原文链接在此. Part 1: Using Github Pages and Hexo to manage personal blogs. Series Part 1 ...

  6. ArcGIS Server10.4安装教程

    准备内容 安装环境:win10*64位专业版 安装文件:ArcGIS_Server_Ent_Windows_1041_150998.iso 破解文件:Lic10.4.1.ecp #安装Server前, ...

  7. Java通过 Scanner 类来获取用户的输入

    通过 Scanner 类来获取用户的输入. import java.util.Scanner; Scanner s = new Scanner(System.in);// 从键盘接收数据  Syste ...

  8. 【Android - 自定义View】之自定义九宫格手势解锁控件

    首先来介绍一下这个自定义View: (1)这个自定义View的名称叫做 LockView ,继承自View类: (2)这个自定义View实现了应用中常见的九宫格手势解锁功能,可以用于保证应用安全: ( ...

  9. Docker 自建私有Registry 私有仓库

    目录 说明 介绍 原理 搭建 查看配置文件 启动 上传和下载镜像测试 测试上传镜像 测试下载镜像 说明 记录搭建 docker 私有仓库步骤 介绍 docker镜像可以托管到dockerhub中,跟代 ...

  10. VMware安装虚拟机及网络配置

    首先VMware版本15.1,linux:CentOS7 64位(ISO镜像),准备好这两个就可以开始安装我们的虚拟机了. VMware的安装就不赘述了,这里主要说下怎么在VMware上面安装linu ...