1

PythonでnetCDF4パッケージを使用しようとしています。20mil 近くのデータ レコード (それぞれ 28 バイト) を取り込み、そのデータを netCDF4 ファイルに書き込む必要があります。昨日、一度にすべて実行しようとしましたが、1 時間ほど実行した後、python はコードの実行を停止し、非常に役立つエラー メッセージが表示されました。

Killed.

とにかく、データのサブセクションでこれを行うと、2,560,000 レコードから 5,120,000 レコードの間のどこかで、コードに十分なメモリがなく、スワッピングを開始する必要があることが明らかになります。もちろん、パフォーマンスは大幅に低下します。2 つの質問: 1) この作業をより効率的に行う方法を知っている人はいますか? 私が考えていることの 1 つは、一度にすべてを行うのではなく、何らかの方法でデータのサブセクションを少しずつ追加することです。誰もそれを行う方法を知っていますか? 2) 最終的にメモリがなくなったときに "Killed" メッセージが表示されたと思いますが、わかりません。誰でもこれに光を当てることができますか?

ありがとう。

補遺: netCDF4 は、この問題に対する回答を提供します。これは、私自身の質問に対する回答で確認できます。というわけで、とりあえず前に進めます。しかし、ここで別の質問があります。netCDF4 の回答は netCDF3 では機能しません。netCDF3 のフレームワークでこの問題を解決する方法を知っている人はいますか? 再度、感謝します。

4

2 に答える 2

1

コードを見ないと何をしているのかわかりませんがsync、ファイルにある程度のデータが書き込まれた後で、コマンドを使用してメモリ内のデータをディスクにフラッシュしてみてください。

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

于 2012-08-03T17:13:13.363 に答える
1

netCDF4 にはすぐに答えがあります。指定された「チャンクサイズ」で netCDF4 変数を宣言します。私は 10000 を使用しましたが、すべてが非常にうまく進みました。回答の編集で示したように、netDF3 は死んでいないため、netCDF3 でもこれを解決する方法を見つけたいと思います。

于 2012-08-03T17:32:33.277 に答える