gpt4 book ai didi

python - 为什么 python 中的这个循环运行速度越来越慢?

转载 作者:太空狗 更新时间:2023-10-30 01:07:06 24 4
gpt4 key购买 nike

在此代码中,有一个 13x13 图像的 4 维数组。我想使用 matplotlib.pyplot 保存每张 13x13 图像。这里出于调试目的,我将外循环限制为 1。

#fts is a numpy array of shape (4000,100,13,13)
no_images = 4000
for m in [1]:
for i in range(no_images):
print i,
fm = fts[i][m]
if fm.min() != fm.max():
fm -= fm.min()
fm /= fm.max() #scale to [0,1]
else:
print 'unscaled'
plt.imshow(fmap)
plt.savefig('m'+str(m)+'_i'+str(i)+'.png')

保存 4000 张图像花费了 20 多个小时。为什么这么慢?如果我将内部循环限制为前 100 张图像,则大约需要 1 分钟。所以整个事情应该在 40 分钟内完成,而不是超过 20 小时!我注意到它似乎运行得越来越慢。

最佳答案

您在这里遇到的是内存泄漏:您一直在创建 AxesImage 对象的实例(通过重复调用 plt.imshow),直到它们无法适应内存;然后整个事情开始交换到磁盘,这非常慢。令人难以置信。为避免内存泄漏,您可以在不需要时销毁 AxesImage 实例:

...
image = plt.imshow(fmap)
plt.savefig('m'+str(m)+'_i'+str(i)+'.png')
del(image)

或者,您也可以只创建一个 AxesImage,然后只更改其中的数据:

...
image = None
for m in [1]:
for i in range(no_images):
...
if image is None:
image = plt.imshow(fmap)
else:
image.set_data(fmap)
...

关于python - 为什么 python 中的这个循环运行速度越来越慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33385895/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com