我正在尝试用100帧创建一个gif,如果我正确地编码它,我认为这不会是一个问题。但是,下面的代码会减慢到爬行,并且似乎会导致内存泄漏。
using Plots
using ProgressMeter
u = rand(100,100)
hmap = heatmap(zeros(size(u)), clim=(0,1))
p = Progress(1000, 1)
anim = Animation()
for i=1:1000
u = rand(100,100)
heatmap!(hmap[1],u)
if mod(i,10) == 0
frame(anim)
end
next!(p)
end
gif(anim, "/tmp/anim_fps30.gif", fps=30)我在编码中犯了一个关键错误吗?有没有一种方法可以获得动画的帧,而不把它们全部保存在内存中?谢谢。
发布于 2018-06-06 17:44:36
我认为循环中较慢的部分不是frame()而是heatmap()。您的代码每帧运行热图10次。尝试:
`using Plots pyplot() # if needed using ProgressMeter`function doit()
u = rand(100,100)
hmap = heatmap(zeros(size(u)), clim=(0,1))
prog = Progress(1000, 1)
anim = Animation()
for i=1:1000
if mod(i,10) == 0
heatmap!(hmap[1],rand(100,100))
frame(anim)
end
next!(prog)
end
anim
end
gif(doit(), "/tmp/anim_fps30.gif", fps=30)
https://stackoverflow.com/questions/50702641
复制相似问题