Python3 基本类型在64位上的占用内存情况
基本类型占用的内存
- 类型
# -*- 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位上的占用内存情况的更多相关文章
- Loadrunner11无法在win7 64位上启用ie解决办法
Loadrunner11无法在win7 64位上启用ie解决办法 1.loadrunner11在win7 64位上默认启用的是32位的那个IE浏览器,路径:C:\Program Files (x86) ...
- 在windows7 64位上安装selenium2library问题解决
今天发现了windows7 64位上安装selenium2Libaray的问题,下载exe文件安装不行.就切换成了半自动模式. 方案如下: 1.首先下载pip安装.(因为要用pip来安装 selen ...
- 在 CentOS 7.5 64位上使用 yum 安装 MySQL 8.0
前段时间在 CentOS 7.5 64位上安装 MySQL 8.0.查了些资料,在这里记录一下详细的安装和设置步骤. 一.安装 使用yum安装MySQL之前需要先下载对应的.rpm文件,下载方法: 去 ...
- 第十七章——配置SQLServer(2)——32位和64位系统中的内存配置
原文:第十七章--配置SQLServer(2)--32位和64位系统中的内存配置 前言: 本文讲述32位和64位系统中的内存配置,在SQLServer 2005/2008中,DBA们往往尝试开启AWE ...
- [你必须知道的.NET] 第八回:品味类型---值类型与引用类型(上)-内存有理
原文地址:http://kb.cnblogs.com/page/42318/ 系列文章导航: [你必须知道的.NET] 开篇有益 [你必须知道的.NET] 第一回:恩怨情仇:is和as [你必须知道的 ...
- windows server 2003(64位)上利用iis6部署32位应用
如果直接部署,会出现如下问题: 试图加载格式不正确的程序. (Exception from HRESULT: 0x8007000B) 解决办法 1.命令行键入: cscript.exe %SYSTEM ...
- WIN7 64位上 MYSQL的ODBC一些个人理解
最近电脑中毒了,无奈之下把32位的xp换成了64位的win7,无聊耗时的搭完开发环境,装了vs6.0(忽略掉一切的不兼容),装完64位的mysql(“mysql-5.6.10-winx64.zip”) ...
- Qt(MinGW版)在win7 64位上无法播放视频解决方案
[原因分析] Qt自带的MinGW是32位版本,不支持64位的ffmpeg(解码器). 无法播放视频,问题就出在opencv_ffmpeg2411_64.dll(opencv\bin\)上. [解决方 ...
- Ubuntu 14.04 64位上安装wps office软件(转http://m.blog.csdn.net/blog/yhc13429826359/24179933)
废话少说,只给出方法供各位参考!wps for Linux版本已经有两三年没有大的动作,当然其他平台,比如windows,Android,ios上的wps效果还是很赞的说. 下面是我成功安装的步骤: ...
随机推荐
- 力扣(LeetCode)2的幂 个人题解
给定一个整数,编写一个函数来判断它是否是 2 的幂次方. 示例 1: 输入: 1 输出: true 解释: 20 = 1 示例 2: 输入: 16 输出: true 解释: 24 = 16 示这题是考 ...
- 领扣(LeetCode)检测大写字母 个人题解
给定一个单词,你需要判断单词的大写使用是否正确. 我们定义,在以下情况时,单词的大写用法是正确的: 全部字母都是大写,比如"USA". 单词中所有字母都不是大写,比如"l ...
- 父组件向子组件传值时,值已经传过来却没有触发子组件的watch监听,解决~
需求: 父组件像封装的子组件传值 (父组件属性传值,子组件props接受) 子组件接受后经过处理回显页面; 预想:子组件接受值 , 经过watch监听,在监听中处理数据,回显数据; 问题:子组件 ...
- 【论文阅读】Diverse Image-to-Image Translation via Disentangled Representations(ECCV2018 oral)
目录 相关链接 方法亮点 相关工作 方法细节 实验结果 总结与收获 参考文献 相关链接: 论文:https://arxiv.org/abs/1808.00948 代码:https://github.c ...
- 基于SDF渲染字体
18号字体 18号字体放大15倍 基于sdf渲染字体放大15倍 相比常规的渲染方式,基于SDF渲染文字可无限放大并保持清晰,几乎没有开销就可实现描边,发光,抗锯齿等效果.且它只需要很小的纹理缓存SDF ...
- Selenium+Java(六)Selenium 强制等待、显式等待、隐实等待
前言 在实际测试过程中,由于网速或性能方面的原因,打开相应的网页后或在网页上做了相应的操作,网页上的元素可能不会马上加载出来,这个时候需要在定位元素前等待一下,等元素加载出来后再进行定位,根据实际使用 ...
- Java中的Calendar 类和SimpleDateFormat 类
1.Calendar 类:import java.util.Calendar; Calendar cal = Calendar.getInstance(); ...
- 纵论WebAssembly,JS在性能逆境下召唤强援
webassembly的作用 webassembly是一种底层的二进制数据格式和一套可以操作这种数据的JS接口的统称.我们可以认为webassembly的范畴里包含两部分 wasm: 一种体积小.加载 ...
- SpringMVC 请求/响应乱码问题解决方案
请求乱码解决之get乱码问题 GET请求乱码原因分析 GET请求参数是通过请求行中的URL发送给Web服务器(Tomcat)的. Tomcat服务器会对URL进行编码操作(此时使用的是Tomcat设置 ...
- .net基础概念
.net基础概念 1. .NET Framework 是支持生成和运行下一代应用程序和 XML Web services 的内部 Windows 组件..NET Framework 具有两 ...