Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 阅读许多文件并创建动画_Python_Matplotlib_Pyfits - Fatal编程技术网

Python 阅读许多文件并创建动画

Python 阅读许多文件并创建动画,python,matplotlib,pyfits,Python,Matplotlib,Pyfits,我写了一个脚本,用fits文件创建动画(电影)。一个文件大小为2.8MB,文件数为9000。 这是代码 import numpy as np import matplotlib matplotlib.use("Agg") import matplotlib.pyplot as plt import matplotlib.animation as animation import os import pyfits import glob import re Writer = animatio

我写了一个脚本,用fits文件创建动画(电影)。一个文件大小为2.8MB,文件数为9000。 这是代码

import numpy as np
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import os
import pyfits
import glob
import re



Writer = animation.writers['ffmpeg']
writer = Writer(fps=15, metadata=dict(artist='Me'), bitrate=1800)

global numbers
numbers=re.compile(r'(\d+)')

def numericalSort(value):
    parts = numbers.split(value)
    parts[1::2] = map(int, parts[1::2])
    return parts


image_list=glob.glob('/kalib/*.fits')

image_list= sorted(image_list,key=numericalSort)
print image_list
fig = plt.figure("movie")
img = []

for i in range(0,len(image_list)):

    hdulist = pyfits.open(image_list[i])
    im = hdulist[0].data
    img.append([plt.imshow(im,cmap=plt.cm.Greys_r)])


ani = animation.ArtistAnimation(fig,img, interval=20, blit=True,repeat_delay=0)
ani.save('movie.mp4', writer=writer)
我认为我的问题是,当我创建数组img[]时,我有8GB的RAM,当RAM满时,我的操作系统终止python脚本

我的问题是: 如何读取9000个文件并创建动画?是否可以创建一些缓冲区或一些并行处理


有什么建议吗?

您最好使用FuncAnimation而不是ArtistAnimation创建动画,正如FuncAnimation中所述,FuncAnimation在内存使用方面更有效。您可能还想尝试FuncAnimation的save_count参数,请查看API文档以获取示例。

您最好使用FuncAnimation而不是ArtistAnimation创建动画,正如FuncAnimation中所述,FuncAnimation在内存使用方面更有效。您可能还想尝试FuncAnimation的save_count参数,请查看API文档以获取示例。

您最好使用FuncAnimation而不是ArtistAnimation创建动画,正如FuncAnimation中所述,FuncAnimation在内存使用方面更有效。您可能还想尝试FuncAnimation的save_count参数,请查看API文档以获取示例。

您最好使用FuncAnimation而不是ArtistAnimation创建动画,正如FuncAnimation中所述,FuncAnimation在内存使用方面更有效。您可能还想尝试FuncAnimation的save_count参数,请查看API文档中的示例。

我建议您使用
ffmpeg
。使用命令
image2pipe
您不必将所有图像加载到RAM中,而是一个接一个(我认为)加载到管道中。

除此之外,
ffmpeg
允许您操作视频(帧率、编解码器、格式等)


我建议您使用
ffmpeg
。使用命令
image2pipe
您不必将所有图像加载到RAM中,而是一个接一个(我认为)加载到管道中。

除此之外,
ffmpeg
允许您操作视频(帧率、编解码器、格式等)


我建议您使用
ffmpeg
。使用命令
image2pipe
您不必将所有图像加载到RAM中,而是一个接一个(我认为)加载到管道中。

除此之外,
ffmpeg
允许您操作视频(帧率、编解码器、格式等)


我建议您使用
ffmpeg
。使用命令
image2pipe
您不必将所有图像加载到RAM中,而是一个接一个(我认为)加载到管道中。

除此之外,
ffmpeg
允许您操作视频(帧率、编解码器、格式等)


感谢您的回答……但我认为这不是我的问题……我在将数据数组从文件读取到img[]数组时遇到问题……动画是在我正确读取数组img[]时创建的,但问题是您首先没有采取正确的方法。您不应该使用imshow制作渲染图像的列表,因为其中的每一个都会占用内存。FuncAnimation允许您根据需要一次渲染一帧,而无需一次渲染所有图像。也许你可以更清楚地知道你希望完成什么,但是列一个大的图像艺术家列表不是办法。作为后续,你所做的工作的原因是,比如说,一个线图或类似的东西,是因为线和多边形等在内存中表示和动画是微不足道的。整个图像是一个不同的故事,当您调用imshow时,您正在为每个帧的每个像素使用内存。天真的方法是行不通的。谢谢你的回答……但我认为这不是我的问题……我在将数据数组从文件读取到img[]数组时遇到问题……动画是在我正确读取数组img[]时创建的,但问题是你一开始没有采取正确的方法。您不应该使用imshow制作渲染图像的列表,因为其中的每一个都会占用内存。FuncAnimation允许您根据需要一次渲染一帧,而无需一次渲染所有图像。也许你可以更清楚地知道你希望完成什么,但是列一个大的图像艺术家列表不是办法。作为后续,你所做的工作的原因是,比如说,一个线图或类似的东西,是因为线和多边形等在内存中表示和动画是微不足道的。整个图像是一个不同的故事,当您调用imshow时,您正在为每个帧的每个像素使用内存。天真的方法是行不通的。谢谢你的回答……但我认为这不是我的问题……我在将数据数组从文件读取到img[]数组时遇到问题……动画是在我正确读取数组img[]时创建的,但问题是你一开始没有采取正确的方法。您不应该使用imshow制作渲染图像的列表,因为其中的每一个都会占用内存。FuncAnimation允许您根据需要一次渲染一帧,而无需一次渲染所有图像。也许你可以更清楚地知道你希望完成什么,但是列一个大的图像艺术家列表不是办法。作为后续,你所做的工作的原因是,比如说,一个线图或类似的东西,是因为线和多边形等在内存中表示和动画是微不足道的。整个图像是一个不同的故事,当您调用imshow时,您正在为每个帧的每个像素使用内存。天真的方法是行不通的。谢谢你的回答……但我认为这不是我的问题……我在将数据数组从文件读取到img[]数组时遇到了问题……动画是在我正确读取了数组img[]后创建的,但问题是你