当前位置: 首页 > 面试题库 >

如何检查iPython中对象的内存使用情况?

伯茂才
2023-03-14
问题内容

我正在使用iPython运行我的代码。我想知道是否有任何模块或命令可以让我检查对象的内存使用情况。例如:

In [1]: a = range(10000)
In [2]: %memusage a
Out[2]: 1MB

类似于%memusage <object>并返回对象使用的内存。


问题答案:

不幸的是,这是不可能的,但是有很多近似答案的方法:

  1. 对于非常简单的对象(例如,整数,字符串,浮点数,双精度数),它们或多或少地表示为简单的C语言类型,您可以像John Mulder的解决方案那样简单地计算字节数。

  2. 对于更复杂的对象,一个很好的近似方法是使用cPickle.dumps将对象序列化为字符串。字符串的长度很好地近似于存储对象所需的内存量。

解决方案2有一个很大的障碍,那就是对象通常包含对其他对象的引用。例如,字典包含字符串键和其他对象作为值。这些其他对象可能是共享的。由于pickle总是尝试对对象进行完整的序列化,因此它总是会高估存储对象所需的内存量。



 类似资料:
  • 问题内容: 我需要在Java中检查服务器的CPU和内存使用情况,有人知道怎么做吗? 问题答案: 如果你正在专门寻找JVM中的内存: 但是,这些仅应作为估计…

  • 问题内容: 我的ipython内核占用了几(近十)Gb的内存。我认为这来自于一些操作期间可能产生的大型对象(矩阵,列表,numpy数组等),现在不再需要了。 我想 列出所有已定义的对象 , 并按 其内存占用量 对其 进行 排序 。有没有简单的方法可以做到这一点?对于某些类型,有方法,但不是全部。因此,我正在寻找一种通用方法来列出我制作的所有对象及其内存占用情况。 问题答案: 假设你正在使用或者,你

  • 问题内容: 我有一个简单的pojos(一个用户类)的列表,其中包含约15个简单字段和1个arrayList。这些代表用户,可能会将100或1000个用户存储在内存中,以避免每次都从外部系统检索它们。(我正在使用Ehcache) 我想通过junit测试知道K个用户列表使用了多少内存。 我的直觉是,即使像一千个这样的简单pojo也不会以任何方式威胁(换言之,小于100 Ko) 在此先感谢您的协助。我非

  • 问题内容: 我正在寻找一种方便的方法来检查对象是否已经存在于集合中。目前,我发现的唯一方法是 我不想创建变量res,以防万一对象存在,它可能是非常繁重的文档,包含很多字段。我希望会有另一种方式,一些Check()函数将仅返回bool值。基本上,我只需要知道对象已经存储在collection中,就不需要它自己 问题答案: 您必须使用$ exists 语法:{栏位:{$ exists:}} 更多细节

  • 问题内容: 最近,我对算法产生了兴趣,并通过编写一个简单的实现,然后以各种方式对其进行了优化来开始探索它们。 我已经熟悉了用于分析运行时的标准Python模块(对于大多数事情,我发现IPython中的timeit magic函数就足够了),但是我也对内存使用感兴趣,因此我也可以探索这些折衷方案(例如,缓存先前计算的值与根据需要重新计算它们的表的成本)。是否有一个模块可以为我配置给定功能的内存使用情

  • 我需要检查执行查询时使用的内存。我已经在MYSQL中将JDBC连接到我的数据库。我也知道如何执行查询。但是我不知道如何检查执行查询时使用的内存。这是为了比较内存和时间。我使用NetBeans。 非常感谢。