2017-04-26 6 views
0

私は非常に大きなグラフGを持っており、2次元配列である距離行列を求めたいとします。私はそれを行う前に、私の二次元配列を割り当てるのに十分なメモリがあることを確認したい。十分なメモリがない場合は、メモリエラーを発生させます。距離行列を計算する時間を無駄にし、最終的にはメモリエラーが発生するのを無駄にしたくありません。変数を割り当てるための十分なメモリがあるかどうかを調べる

答えて

1

この目的でnumpyを使用することをお勧めします。確かにnumpy配列は標準リストより少ないメモリしか使用しないので、重み付けに使用するデータ型を制御することができます。行列演算が多く実装されています。大きすぎる配列を割り当てると例外が発生します。

>>> a = numpy.empty((100, 100)) 
>>> a = numpy.empty((100000000, 1000000000)) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
MemoryError 
+0

ありがとうございます。私はそれを試してみましょうが、私は他の依存関係なしにこれをPythonで行う方法があるのだろうかと思いました。 mallocなどのC言語アロケータを使用できますか? – Abdulhakeem

+0

いいえ、わかりました。標準的な作業は、コンテナ(リスト、dicts)です。コンテナはそのスペースを割り当てることができます(たとえば、[None] * 1000、1000要素のリストをNoneに設定するなど)が、要素のメモリ使用量は保証されません。私は、あなたが '標準的な'ライブラリを手に入れるほどCの配列に近い配列があると思います。 – Ante

関連する問題