axe*_*nde 8 python memory-leaks matplotlib
我有一段代码,代码可以正常循环一次或两次,但最终会构建内存.我试图找到内存泄漏,memory_profiler这是结果:
row_nr Memory_usage Memory_diff row_text
470 52.699 MiB 0.000 MiB ax.axis('off')
471 167.504 MiB 114.805 MiB fig.savefig('figname.png', dpi=600)
472 167.504 MiB 0.000 MiB fig.clf()
473 109.711 MiB -57.793 MiB plt.close()
474 109.711 MiB 0.000 MiB gc.collect()`
Run Code Online (Sandbox Code Playgroud)
我创建了这样的图:
fig, ax = plt.subplots()
任何建议109 - 52 = 57 MiB去了吗?
我正在使用python 3.3.
wfg*_*geo 17
这里发布的内容对我来说都不起作用。就我而言,它与通过 SSH 解释器在服务器上运行有关。显然,这将使用非交互模式,并开始正常清除所有内存:
import matplotlib
matplotlib.use('Agg')
Run Code Online (Sandbox Code Playgroud)
来源:https://matplotlib.org/stable/faq/howto_faq.html#work-with-threads
# Clear the current axes.
plt.cla()
# Clear the current figure.
plt.clf()
# Closes all the figure windows.
plt.close('all')
Run Code Online (Sandbox Code Playgroud)
希望这可以帮到你
摘自此处:Matplotlib 错误导致内存泄漏。我怎样才能释放该内存?
其中有原始参考:https://www.mail-archive.com/matplotlib-users@lists.sourceforge.net/msg11809.html
要获得斧头和图形,请执行以下操作:
代替:
import matplotlib.pyplot as plt
fig,ax = plt.subplots(1)
Run Code Online (Sandbox Code Playgroud)
使用:
from matplotlib import figure
fig = figure.Figure()
ax = fig.subplots(1)
Run Code Online (Sandbox Code Playgroud)
也不需要做plt.close()任何事情。这对我有用。