我有一个循环执行身体大约200次.在每次循环迭代中,它进行复杂的计算,然后作为调试,我希望生成NxM矩阵的热图.但是,生成这个热图是无法忍受的缓慢,并且显着减慢了已经很慢的算法.
我的代码是这样的:
import numpy
import matplotlib.pyplot as plt
for i in range(200):
matrix = complex_calculation()
plt.set_cmap("gray")
plt.imshow(matrix)
plt.savefig("frame{0}.png".format(i))
Run Code Online (Sandbox Code Playgroud)
来自numpy的矩阵不是很大 - 300 x 600的双打.即使我不保存数字而是更新屏幕上的情节,它甚至更慢.
当然,我一定是在滥用pyplot.(Matlab可以做到这一点,没问题.)我如何加快速度?
尝试放入plt.clf()循环以清除当前图形:
for i in range(200):
matrix = complex_calculation()
plt.set_cmap("gray")
plt.imshow(matrix)
plt.savefig("frame{0}.png".format(i))
plt.clf()
Run Code Online (Sandbox Code Playgroud)
如果你不这样做,那么当机器努力为这个数字分配越来越多的内存时,循环会变慢.