【发布时间】:2011-10-29 09:46:08
【问题描述】:
我在一些 django-celery 任务中加入了几个 matlpotlib 函数。
每次调用任务时,都会有更多 RAM 专用于 python。不久之后,python 占用了所有的 RAM。
问题:我怎样才能释放这段记忆?
更新 2 - 第二种解决方案:
我问了一个类似的问题,具体是关于 matplotlib 错误时内存被锁定的问题,但是如果您使用多进程运行在一个单独的进程中绘制函数,一旦进程结束,其内存将自动释放。
Matplotlib errors result in a memory leak. How can I free up that memory?
更新 - 解决方案:
这些 stackoverflow 帖子建议我可以使用以下命令释放 matplotlib 对象使用的内存:
.clf():Matplotlib runs out of memory when plotting in a loop
.close():Python matplotlib: memory not being released when specifying figure size
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()
【问题讨论】:
标签: python memory-leaks numpy matplotlib