如何在创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时,连接对象将所有查询保存在内存中)。