news 2026/9/21 18:26:28

查找 Python 中对象使用的内存量

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
查找 Python 中对象使用的内存量

计算机系统中的内存通常设置为一系列二进制数字或位。每个字节都有一个唯一的内存位置,可用于读取或写入字节的值。字节可以解释为字符、整数、浮点数或其他数据类型,用于将数据存储在内存中。您可以借助 pympler 内置的 sys.getsizeof() 和 asizeof() 等工具来测量 Python 中的内存使用情况。

方法 1:使用 Getsizeof() 函数

可以使用此函数确定对象或数据结构所需的内存量。需要测量其内存大小的对象是唯一的参数。任何类型的对象(包括用户指定的类和实例)都可以作为参数传递。

语法

sys.getsizeof(*objt_name*)

*objt_name* 可以接受任何对象 - 整数、字符串、函数等。

该函数以字节为单位返回给定对象的大小。

算法

  • 导入所需的 sys 模块。

  • 创建一个包含各种数据类型的字典,例如字符串、整数、浮点数、列表和函数。

  • 创建一个函数,将整数 n 作为输入并返回从 0 到 n-1 的整数列表。

  • 使用sys.getsizeof() 查找方法 create_nmbr_list 和 my_dictn 的大小。

  • 打印值。

时间复杂度 - O(1)

空间复杂度 - O(n),其中 n 是字典的大小。

以下示例说明如何创建一个包含列表和 lambda 函数以及其他数据类型的字典。使用 getsizeof() 函数生成长整数列表的函数。

示例

import sys # 定义一个包含各种数据类型的字典 my_dictn = { "string": "Tutorials Point", "integer": 662, "float": 3.14, "list": [12, 22, 32, 42, 52], "function": lambda x: x ** 2 } # 定义一个创建整数列表的函数 def create_nmbr_list(n): return [i for i in range(n)] # 使用 sys.getsizeof() 测量字典和函数的大小 print("Size of dictionary using sys.getsizeof(): ", sys.getsizeof(my_dictn)) print("Size of function using sys.getsizeof(): ", sys.getsizeof(create_nmbr_list))

输出

Size of dictionary using sys.getsizeof(): 232 Size of function using sys.getsizeof(): 144

注意 -内存中项目的大小可能会根据多种因素而变化,包括其他程序或操作系统当前正在使用的内存量。

方法 2:使用 Asizeof( ) 函数

此函数由 Pympler 包提供,用于内存分析和优化。与内置的 getsizeof() 函数不同,asizeof() 会考虑目标对象引用的所有对象的内存使用情况。

语法

asizeof(*object_*)

*object_* 可以接受任何对象 - 整数、字符串、函数、布尔值等

该函数以字节为单位返回给定对象及其引用的大小。

算法

  • 导入所需的 pympler.asizeof() 模块。

  • 创建一个名为 my_dict2 的字典,其中包含不同的数据类型。

  • 创建函数以生成整数列表。

  • My_dict2 和 create_int_list 的大小可以是使用 asizeof 函数记录。

  • 使用变量 dictn_size_pympler 和 fnct_size_pympler,打印 my_dict2 和 create_int_list 的大小。

时间复杂度 - O(1)

空间复杂度 - O(n),其中 n 是字典的大小。

以下程序说明了使用 lambda 函数和其他数据类型的字典,使用 asizeof 函数查找对象使用的内存。

示例

from pympler.asizeof import asizeof # 定义一个包含各种数据类型的字典 my_dict2 = { "string": "Hello Viewers", "integer": 42, "float": 3.14, "list": [1, 2, 3, 4, 5], "set": {10, 20, 30, 40, 50}, "boolean": True, "function": lambda x: x ** 2, } # 定义一个创建大型整数列表的函数 def create_int_list(i): return [x for x in range(i)] # 使用 pympler.asizeof() 测量字典和函数的大小 dictn_size_pympler = asizeof(my_dict2) fnct_size_pympler = asizeof(create_int_list) # 打印结果 print("Size of dictionary using pympler.asizeof: ", dictn_size_pympler) print("Size of function using pympler.asizeof: ", fnct_size_pympler)

输出

Size of dictionary using pympler.asizeof: 384 Size of function using pympler.asizeof: 152

结论

Sys.getsizeof() 仅返回项目本身的大小,而 asizeof() 返回对象及其引用的每个对象的大小。因此,asizeof() 可以更清楚地显示对象的内存利用率。

虽然 sys.getsizeof() 仅返回对象本身的大小,但 asizeof() 返回程序已导入和使用的每个模块的大小。根据所使用的 Python 版本,sys.getsizeof() 可能会做出不同的反应。


相关文章

  • 使用 Google 的 Teachable Machine 进行图像分类
  • 这些运算符是什么意思(**、^、%、//)?
  • 用 Python 编写程序,找出要放入仓库的箱子数量
  • 如何将 IPython 笔记本转换为 PDF 和 HTML?
  • 如何在 Python 中验证字符串是否仅包含字母、数字、下划线和破折号?
  • 使用 Python-Random 的掷骰子模拟器
  • 如何在 Python 中将数据值插入字符串?
  • 如何在 Python 中删除已安装的模块?
  • 下载并安装最新版本的 pip
  • 使用 Python 从 Yahoo Finance 获取财务数据

有用资源

  • python 参考教程 - 该教程包含有关 python 的更多信息:https://www.w3schools.cn/python/

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/19 0:50:52

三步搞定verl:RLHF训练环境快速部署手册

🚀 欢迎来到verl框架的RLHF训练环境搭建指南!作为字节跳动Seed团队开源的大语言模型强化学习工具,verl支持多种RL算法和训练后端,让我们一起来探索如何快速部署这个强大的训练环境。 【免费下载链接】verl verl: Volcano Engine R…

作者头像 李华
网站建设 2026/9/21 14:11:09

好写作AI:当枯燥的统计表格,遇上会讲故事的AI“翻译官”

面对SPSS导出的回归分析表&#xff0c;你知道p值<0.05很显著&#xff0c;R方也不错&#xff0c;可到了论文的“结果与讨论”部分&#xff0c;却发现自己像个“学术哑巴”——除了重复表格里的数字&#xff0c;竟不知该如何组织一段有逻辑的专业论述。对于依赖数据分析的研究…

作者头像 李华
网站建设 2026/9/20 11:21:18

重磅︱数字孪生风洞「风神NF3」发布!

以下文章仅为学术分享&#xff0c;如有侵权&#xff0c;请联系删除 公众号原文链接&#xff1a; https://mp.weixin.qq.com/s/-rSUrT5-lpPRmV3ad0fKgw SIMFORGE™ NEWS 2025年11月29日&#xff0c;第四届智能流体力学产业联合体大会于深圳隆重召开。 会上&#xff0c;在中航工…

作者头像 李华
网站建设 2026/9/21 6:37:42

审计场景中录音转文字工具的技术实现与选型指南

在审计工作中&#xff0c;现场访谈录音的高效处理是提升生产力的关键环节。审计人员常常需要从长时间的对话中提取结构化信息&#xff0c;传统手工转写不仅效率低下&#xff0c;还容易产生信息遗漏。本文将从技术实现角度分析录音转文字工具的核心能力&#xff0c;并提供多个主…

作者头像 李华
网站建设 2026/9/21 6:23:16

Livewire完整入门指南:5分钟掌握Laravel动态界面开发

Livewire完整入门指南&#xff1a;5分钟掌握Laravel动态界面开发 【免费下载链接】livewire livewire&#xff1a;这是Laravel Livewire的一个官方示例项目&#xff0c;适合学习如何使用Livewire组件来构建动态网页。特点包括实时更新、易于测试、与Laravel框架集成良好等。 …

作者头像 李华