如何在创buildmatplotlib数字后释放内存

我有几个matlpotlib函数卷入一些Django芹菜任务。

每次任务被称为更多的RAM专用于Python。 太久之前,python占用了所有的RAM。

问题:我如何释放这个内存?

更新2 – 第二个解决scheme:

我问了一个类似的问题,特别是有关matplotlib错误时locking的内存,但我得到了一个很好的答案。如果使用多gc.collect()运行,则不需要gc.collect()gc.collect()绘图function在一个单独的进程中,一旦进程结束,内存将自动释放。

Matplotlib错误导致内存泄漏。 我怎样才能释放内存?

更新 – 解决scheme:

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

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

.close() : Python matplotlib:指定graphics大小时,内存不会被释放

 import gc gc.collect() 

以下是我用来testing解决scheme的示例:

 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)以确保你的函数不pipe是芹菜泄漏? 确保将django.settings.DEBUG设置为False(当DEBUG = True时,连接对象将所有查询保存在内存中)。