也许我可以先介绍一下我的问题。我正在编写一个Python程序,用于后处理不同的物理模拟。每个模拟最多可以创建100 GB的输出。我需要处理不同时间步长的不同信息(如位置、场和密度等)。我希望一次性访问所有这些数据,但由于我的系统内存不足,这是不可能的。通常我使用读取文件,然后进行一些操作并清除内存。然后我读取其他数据,再进行一些操作并清除内存。
现在我的问题是,如果我这样做,那么我将花费大量的时间来重复读取数据,这需要很长时间。我希望只读取一次并将其存储以便轻松访问。你知道一种快速存储大量数据的方法或者一种不需要很多空间的方法吗?
我刚刚创建了一种比普通的打开-读取方法快十倍左右的方法。但我使用了cat( Linux命令)。这是一种非常粗糙的方法,我希望将其从我的脚本中删除。
是否可以使用数据库来存储这些数据,并比正常读取更快地获取数据?(对不起,我不是计算机科学家,我对数据库没有很多了解)。
现在我的问题是,如果我这样做,那么我将花费大量的时间来重复读取数据,这需要很长时间。我希望只读取一次并将其存储以便轻松访问。你知道一种快速存储大量数据的方法或者一种不需要很多空间的方法吗?
我刚刚创建了一种比普通的打开-读取方法快十倍左右的方法。但我使用了cat( Linux命令)。这是一种非常粗糙的方法,我希望将其从我的脚本中删除。
是否可以使用数据库来存储这些数据,并比正常读取更快地获取数据?(对不起,我不是计算机科学家,我对数据库没有很多了解)。
out = string.split(os.popen("cat "+base+"phs/phs01_00023_"+time).read())
# and if I want to have this data as arrays then I normally use and reshape (if I
# need it)
out = array(out)
out = reshape(out)
通常我会使用numpy方法numpy.loadtxt
,需要与普通读取相同的时间。
f = open('filename')
f.read()
...
我认为loadtxt
只是使用了正常方法,并添加了一些代码行。
我知道有一些更好的读取数据的方法。但我发现它们都非常慢。现在我将尝试使用mmap
,希望能获得更好的性能。