Matplotlib 内存不足
Matplotlib runs out of memory
这是我用来绘制许多图并保存它们的代码,但它耗尽了所有可用的 RAM 并导致笔记本崩溃。我尝试添加 fig.clf()
、del fig
、gc.collect
,但似乎没有任何效果。
我只能保存大约 38 个数字,然后会话在 Google Colab 上崩溃,因为 RAM 已满。
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
print(np.__version__) # 1.19.5
print(mpl.__version__) # 3.2.2, also tried with latest 3.4.1
x = np.arange(0, 280, 0.1)
y = np.sin(x)
for k in range(100):
fig, ax = plt.subplots(6, 2, sharex = True)
fig.set_size_inches(37.33, 21)
for i in range(2):
for j in range(6):
ax[j][i].plot(x, y)
fig.savefig(f'figure{k}.png', dpi = 300)
plt.close(fig)
也许如果你尝试在每个图形生成后保存它,我的意思是尝试将 fig. savefig
放在 for 循环中。
编辑:在 google 上查找问题后,我发现您可能需要购买 Colab pro。
这与内联后端有关。可以通过显式切换到 agg 后端来避免内存泄漏。
交叉参考:matplotlib/issues/20067
这是我用来绘制许多图并保存它们的代码,但它耗尽了所有可用的 RAM 并导致笔记本崩溃。我尝试添加 fig.clf()
、del fig
、gc.collect
,但似乎没有任何效果。
我只能保存大约 38 个数字,然后会话在 Google Colab 上崩溃,因为 RAM 已满。
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
print(np.__version__) # 1.19.5
print(mpl.__version__) # 3.2.2, also tried with latest 3.4.1
x = np.arange(0, 280, 0.1)
y = np.sin(x)
for k in range(100):
fig, ax = plt.subplots(6, 2, sharex = True)
fig.set_size_inches(37.33, 21)
for i in range(2):
for j in range(6):
ax[j][i].plot(x, y)
fig.savefig(f'figure{k}.png', dpi = 300)
plt.close(fig)
也许如果你尝试在每个图形生成后保存它,我的意思是尝试将 fig. savefig
放在 for 循环中。
编辑:在 google 上查找问题后,我发现您可能需要购买 Colab pro。
这与内联后端有关。可以通过显式切换到 agg 后端来避免内存泄漏。 交叉参考:matplotlib/issues/20067