使用matplotlib内存泄漏

2020-12-30  本文已影响0人  irene0_0

在用pytest做测试的时候,发现了用例占用了很大内存,使用模块memory_profiler检测代码后,发现在使用fig.savefig()的时候大量内存占用,并且没有释放,由于图比较大,且数量多,在跑了几个用例之后,16G的内存就被用的差不多了......

解决办法:

  1. 在fig.savefig()后根据需要增加响应方法
    plt.cla() # 清除axes,即当前 figure 中的活动的axes,但其他axes保持不变。
    plt.clf() # 清除当前 figure 的所有axes,但是不关闭这个 window,所以能继续复用于其他的 plot。
    plt.close() # 关闭 window,如果没有指定,则指当前 window。
    plt.close(fig)
    plt.close('all') # 我采用了这个,关闭了所有的

  2. 因为占用内存实在是大,为了及时回收内存,也使用了gc (为了内存在case结束之后,也使用了gc)
    在plt.close('all') 增加了
    gc.collect()

改善后的结果:

使用memory_profiler检测内存,用例占用真的降下来了。

附加 memory_profiler 地址

https://pypi.org/project/memory-profiler/

上一篇下一篇

猜你喜欢

热点阅读