用python编写大型netCDF4文件?

时间:2012-08-03 16:17:02

标签: python numpy netcdf

我正在尝试使用python的netCDF4包。我正在摄取接近20mil的数据记录,每个28字节,然后我需要将数据写入netCDF4文件。昨天,我尝试一次完成所有操作,经过一个小时左右的执行后,python停止运行代码,并提供了非常有用的错误消息:

Killed.

无论如何,使用数据的子部分,显然在2,560,000条记录和5,120,000条记录之间,代码没有足够的内存并且必须开始交换。当然,性能大大降低。所以有两个问题: 1)任何人都知道如何更有效地完成这项工作?我想的一件事是以某种方式逐步放入数据的子部分,而不是一次性完成所有操作。谁知道怎么做? 2)我假设当记忆终于用完时发生了“被杀”的消息,但我不知道。任何人都可以对此有所了解吗?

感谢。

附录:netCDF4提供了这个问题的答案,你可以在我给自己的问题的答案中看到。所以目前,我可以继续前进。但是这里有另一个问题:netCDF4的答案不适用于netCDF3,而netCDF3并没有远远超过。任何人都知道如何在netCDF3的框架中解决这个问题?再次感谢。

2 个答案:

答案 0 :(得分:1)

如果没有看到代码,很难说出你在做什么,但是你可以尝试使用sync命令将一些数据写入文件后将内存中的数据刷新到磁盘:

http://netcdf4-python.googlecode.com/svn/trunk/docs/netCDF4.Dataset-class.html

答案 1 :(得分:1)

netCDF4中有一个现成的答案:用一些指定的“chunksize”声明netCDF4变量。我使用了10000,一切都很顺利。正如我在编辑中指出的那样,我想在netCDF3中找到解决这个问题的方法,因为netDF3还远没有死。