列出ipython和jupyter中的内存使用情况

问题描述

假设你正在使用ipython或者jupyter,你需要做的工作一点点地得到一个列表中的所有对象的 已经定义。这意味着要提供一切globals()和剔除这些对象modulesbuiltinsipython objects,等等。一旦你确定你有这些对象,那么你就可以继续与抢夺它们的大小sys.getsizeof。可以总结如下:

import sys

# These are the usual ipython objects, including this one you are creating
ipython_vars = ['In', 'Out', 'exit', 'quit', 'get_ipython', 'ipython_vars']

# Get a sorted list of the objects and their sizes
sorted([(x, sys.getsizeof(globals().get(x))) for x in dir() if not x.startswith('_') and x not in sys.modules and x not in ipython_vars], key=lambda x: x[1], reverse=True)

请记住,对于python对象(使用python的内置函数创建的对象),sys.getsizeof将非常准确。但是使用第三方库创建的对象可能有点不准确。此外,请注意,sys.getsizeof如果对象由垃圾收集器管理,则会增加额外的垃圾收集器开销。因此,某些事情看起来可能比实际的要重。

附带说明一下,numpy.nbytes方法可能会引起误解,因为它不包括数组对象的非元素属性消耗的内存。

我希望这有帮助。

解决方法

我的ipython内核占用了几(近十)Gb的内存。我认为这来自于一些操作期间可能产生的大型对象(矩阵,列表,numpy数组等),现在不再需要了。

我想 列出所有已定义的对象并按 其内存占用量 对其 进行 排序
。有没有简单的方法可以做到这一点?对于某些类型,有nbytes方法,但不是全部。因此,我正在寻找一种通用方法来列出我制作的所有对象及其内存占用情况。

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

猜你在找的编程问答相关文章

在Pandas数据框中旋转数据表
如何获得浮点序列中的下一个值?
获取Instagram粉丝
在批处理结束时检测到不可提交的事务。交易回滚
将一个文本文件文件夹与一个单元格中的每个内容合并为一个CSV文件
在使用JSON数据时,如何防止我的应用程序意外崩溃,“关闭”,而代之以处理异常?
JDBC批处理INSERT,返回ID
具有多个表的复杂INNER JOIN查询的回显结果
微信公众号搜索 “ 程序精选 ” ,选择关注!
微信公众号搜 "程序精选"关注