【发布时间】:2015-09-18 07:55:56
【问题描述】:
我有一段代码可以正常循环一次或两次,但最终会增加内存。我尝试使用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()`
我创建了这样的图形:
fig, ax = plt.subplots()
有什么建议 109 - 52 = 57 MiB 去哪儿了?
我正在使用 python 3.3。
【问题讨论】:
-
stackoverflow.com/questions/7125710/… 的可能重复尽管这是一种解决方法,但不是解决此问题的明确方法。
-
这个问题更笼统,可能是其中一种场景涵盖了您的情况。如果没有,请告诉我们有关用例的更多详细信息stackoverflow.com/questions/7101404/…。
-
感谢您的尝试,不幸的是它有效,我没有在 django 中运行任何东西,所以没有帮助。我可以尝试多处理,但如上所述,只是避免问题而不解决问题。我正在使用子图(“fig, ax= plt.subplots()”)所以我不能从 fig = plt.figure() 更改为 fig = figure.Figure(),或者?还有其他建议吗?
-
在每个循环结束时尝试
plt.close('all')。使用agg后端为我工作。
标签: python matplotlib memory-leaks