私は、Pythonで解析する必要がある実験から出力される一連の大きなテキストファイル(最大1ギガバイト)を持っています。彼らは最高の最初の質問提示2D numpyの配列にロードされます:行の数が最も効率的に構築することが非常に大きなnumpyの配列を できるか、ロードの開始時には不明であるためnumpyアレイをインクリメンタルに構築し、メモリ使用量を測定する
- を、行ごとに?
単純に2つの大きな配列が同時に存在するため、配列に行を追加するだけではメモリの効率が悪くなります。同じ問題は、numpy.append
を使用した場合に発生するようです。 stack
の機能は有望ですが、私は理想的には、その場所でアレイを成長させたいと考えています。
これは、2番目の質問につながる:
- 重く がnumpyの配列を使用するPythonプログラムのメモリ使用量を観察するための最良の方法は何ですか?
上記の問題を調べるために、通常のメモリプロファイリングツールheapyとpymplerを使用しましたが、外側の配列オブジェクト(80バイト)のサイズだけを取得しています。 Pythonプロセスがどれだけのメモリを使用しているのかを測定していないのですが、どのようにして配列の「フル」サイズになるのでしょうか?
ローカル詳細:OSX 10.6、Python 2.6、しかし一般的な解決策は大歓迎です。
ありがとうございます。ファイルのサイズを考えると、私は最初のパスをカウントするだけでは消極的でしたが、メモリ問題を解決する最も簡単で効率的な方法です。 –
私は同僚に最近同様の質問をしましたが、私は最初のパスからあなたを救う別の可能性を思いつきました。ファイル内の「要素」のおおよそのサイズを知っていれば、それをファイルサイズに分割することができます。安全のためにいくつかのパディングを追加すると、メモリ全体に書き込むことができます。特別な、初期化されていない、非表示にするには、データを持つ要素のみのビューを使用できます。あなたは行き過ぎていないことを確認する必要があります。完璧ではありませんが、ファイルの読み取り速度が遅く、データが一貫してレイアウトされていると、動作する可能性があります。 – AFoglia