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

创建matplotlib图形后如何释放内存

沈长恨
2023-03-14
问题内容

我将一些matlpotlib函数集成到了一些django-celery任务中。

每次调用任务时,都会将更多RAM专用于python。不久之后,python占用了所有RAM。

问题: 如何释放此内存?

更新2-第二种解决方案

我问过类似的问题,特别是有关内存锁定matplotlib错误的时候,但是我有一个很好的回答这个问题.clf().close()以及gc.collect()如果使用多进程运行在单独的进程中绘图功能,其内存会自动释放不需要一旦过程结束。

更新-解决方案:

这些帖子建议我可以使用以下命令释放matplotlib对象使用的内存:

.clf():Matplotlib循环绘制时内存不足

.close():Python
matplotlib:指定图形大小时未释放内存

import gc
gc.collect()

这是我用来测试解决方案的示例:

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
from pylab import import figure, savefig
import numpy as np
import gc

a = np.arange(1000000)
b = np.random.randn(1000000)

fig = plt.figure(num=1, dpi=100, facecolor='w', edgecolor='w')
fig.set_size_inches(10,7)
ax = fig.add_subplot(111)
ax.plot(a, b)

fig.clf()
plt.close()
del a, b
gc.collect()

问题答案:

您是否尝试过多次运行任务功能(在for中),以确保无论芹菜,功能都不会泄漏?确保django.settings.DEBUG设置为False(当DEBUG =
True时,连接对象将所有查询保存在内存中)。



 类似资料:
  • 问题内容: 我正在使用matplotlib生成许多数值模拟结果的图表。这些图用作视频中的帧,因此我通过重复调用与此函数类似的函数来生成许多图: 问题在于,每次调用此函数时,python进程的内存使用量都会增加几兆字节。例如,如果我用以下循环调用它: 然后ram的使用量会随着时间增长到600MB。但是,如果我在函数定义中注释掉该行,那么ram的使用将保持稳定在52MB。是默认的图形尺寸,因此在两种情

  • 我可以访问figure实例。我知道在这个图中有一个图例,我可以通过。现在我想更改图例的属性。其中一些我可以通过设置器访问,比如。 创建图例时,它接受多个关键字参数: 类matplotlib。传奇传奇(父项、句柄、标签、loc=None、numpoints=None、markerscale=None、scatterpoints=None、scatteryoffsets=None、prop=None、

  • 问题内容: 我正在运行django应用程序,其中包括matplotlib,并允许用户指定图形的轴。这可能会导致 “溢出错误:超出了Agg复杂度” 发生这种情况时,最多会占用100MB的RAM。通常,我会使用,和释放该内存,但是与该错误关联的内存似乎与该绘图对象无关。 有谁知道我该如何释放记忆? 谢谢。 这是一些给我Agg复杂度错误的代码。 问题答案: 我假设您可以至少运行一次您发布的代码。该问题仅

  • 我正在创建一个应用程序,当我单击一个按钮时,它将在new中打开一个表。但我的问题是,当我关闭该表的时,应用程序不会释放内存。JavaFX有什么问题吗?还是我得做点别的? 我尝试在该阶段结束时将所有内容设置为空,但仍然没有释放内存。 表的舞台上的关闭事件: 表视图; 舞台我的舞台; 我已经创建了一个名为replaceScene方法来使用文件为Stage加载场景。它将返回它的控制器和设置的场景进入舞台

  • 根据我的理解, free()用于释放之前使用malloc分配的内存。 在我下面的片段中,我释放了我分配的内存。但是即使释放后我也能够访问指针?这怎么可能? free如何在内部工作?

  • 我想在Java中生成一个XFDF Stamp注释,它的内部会有一个透明的图像。我很难识别图像存储的格式以及如何将输入图像转换为该格式。 到目前为止我知道 null 我有一个包含图像的XFDF示例,当我解码图像时,我看到了如下语法,但遗憾的是,我不知道 标记中存在什么样的原始数据。 我已经设法在PDFBox的帮助下在PDF中创建了一个带有自定义图像的橡皮图章注释,但遗憾的是PDFBox似乎不支持将这