在用pytest做测试的时候,发现了用例占用了很大内存,使用模块memory_profiler检测代码后,发现在使用fig.savefig()的时候大量内存占用,并且没有释放,由于图比较大,且数量多,在跑了几个用例之后,16G的内存就被用的差不多了......
解决办法:
-
在fig.savefig()后根据需要增加响应方法
plt.cla() # 清除axes,即当前 figure 中的活动的axes,但其他axes保持不变。
plt.clf() # 清除当前 figure 的所有axes,但是不关闭这个 window,所以能继续复用于其他的 plot。
plt.close() # 关闭 window,如果没有指定,则指当前 window。
plt.close(fig)
plt.close('all') # 我采用了这个,关闭了所有的 -
因为占用内存实在是大,为了及时回收内存,也使用了gc (为了内存在case结束之后,也使用了gc)
在plt.close('all') 增加了
gc.collect()
改善后的结果:
使用memory_profiler检测内存,用例占用真的降下来了。
网友评论