gpt4 book ai didi

python - 警告过多的开放数字

转载 作者:IT老高 更新时间:2023-10-28 21:05:49 26 4
gpt4 key购买 nike

在我使用 fix, ax = plt.subplots(...) 创建许多图形的脚本中,我收到警告 RuntimeWarning:已打开超过 20 个图形。通过 pyplot 接口(interface) (matplotlib.pyplot.figure) 创建的图形会一直保留到显式关闭,并且可能会消耗太多内存。

但是,我不明白为什么会收到此警告,因为在使用 fig.savefig(...) 保存图形后,我使用 fig.clear();删除无花果。在我的代码中,我一次打开的图形不止一个。尽管如此,我还是收到了关于开放数字过多的警告。这是什么意思/我怎样才能避免收到警告?

最佳答案

在您的图形对象上使用 .clf.cla 而不是创建 new 图形。来自 @DavidZwicker

假设您已将 pyplot 导入为

import matplotlib.pyplot as plt

plt.cla() clears an axis ,即当前图中的当前事件轴。它使其他轴保持不变。

plt.clf() clears the entire current figure与所有轴一起,但保持窗口打开,以便可以将其重新用于其他绘图。

plt.close() closes a window ,如果没有另外指定,它将是当前窗口。 plt.close('all') 将关闭所有打开的图形。

del fig 不起作用的原因是 pyplot 状态机保持对图形的引用(如果它要知道什么,它必须“当前数字”是)。这意味着即使您删除 your 对图的引用,也至少有一个事件引用,因此永远不会被垃圾回收。

由于我在这里就这个答案的集体智慧进行投票,@JoeKington 在评论中提到 plt.close(fig)将从 pylab 状态机 ( plt._pylab_helpers.Gcf ) 中删除特定的图形实例,并允许对其进行垃圾收集。

关于python - 警告过多的开放数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21884271/

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