gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 22:11:46 58 4
gpt4 key购买 nike

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

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

最佳答案

假设您使用 ipythonjupyter,您需要做一些工作来获取所有对象的列表已经定义了。这意味着获取 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 方法可能会有些误导,因为它不包括数组对象的非元素属性消耗的内存。

我希望这会有所帮助。

关于python - 列出 ipython 和 jupyter 中的内存使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40993626/

58 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com