2017-01-19 5 views

答えて

0

あなたは32ビットのPythonを使用していると仮定します。 32bit PythonはプログラムRAMのメモリを2GBに制限しています(32bitプログラムにはこれがハード制限されています)。これにはPythonのオーバーヘッドが含まれています。通常のPythonオブジェクトは連続したメモリを必要とせず、異種のメモリ領域をマップします。

numpy.arrays メモリ割り当てが割り当てられます。また、np.array(a) + 1は2番目の配列を作成し、巨大な連続ブロック(実際にはほとんどの操作)を再度割り当てなければなりません。

  1. 使用64ビットのpythonを気に来て、いくつかの可能な解決策...これは、あなたがこれでメモリエラーが発生する可能性は低いだろうあなたに...で動作するようにより多くのRAMを桁違いを与えます
  2. マルチプロセッシングを使用して、numpyの処理を行うだけの新しい2GBの制限を持つ新しいプロセスを作成する
  3. 別のものを使用してください(おそらくnumpyが適切な解決策ではないようです)。 numpy(すなわち、データベース)よりも解答
+0

あなたは正しいです、私は32ビットを使用しています。以前はこれを知らない。ありがとう。 – xiaoxiao

関連する問題