【发布时间】:2013-05-04 06:39:58
【问题描述】:
我正在使用迭代循环来使用 Matplotlib 绘制 soame 数据。当代码保存了大约 768 个绘图时,它会抛出以下异常。
RuntimeError: Could not allocate memory for image
我的电脑有大约 3.5 GB 的 RAM。 有没有什么方法可以并行释放内存,以免内存耗尽?
【问题讨论】:
标签: python memory-management matplotlib
我正在使用迭代循环来使用 Matplotlib 绘制 soame 数据。当代码保存了大约 768 个绘图时,它会抛出以下异常。
RuntimeError: Could not allocate memory for image
我的电脑有大约 3.5 GB 的 RAM。 有没有什么方法可以并行释放内存,以免内存耗尽?
【问题讨论】:
标签: python memory-management matplotlib
当你完成它们时,你还记得close 你的数字吗?例如:
import matplotlib.pyplot as plt
#generate figure here
#...
plt.close(fig) #release resources associated with fig
【讨论】:
mpl 真正完成之前由pyqt 释放和清理。忽略这些错误是安全的,并且它已在主干上修复(我不记得该修复是否包含在 1.2 错误修复版本中)
作为一个略有不同的答案,请记住您可以重复使用数字。比如:
fig = plt.figure()
ax = plt.gca()
im = ax.imshow(data_list[0],...)
for new_data in data_list:
im.set_cdata(new_data)
fig.savefig(..)
这将使您的代码运行得更快,因为它不需要设置和拆除图形 700 多次。
【讨论】: