2011-12-14 8 views
0

私はプログラマではありませんが、プログラミングの問題に直面しています。私はPythonコードのメモリ消費を減らす必要があります。 1つの選択肢は、可変精度を減少させることである。これに関して:メモリ削減

  1. 浮動小数点の識別(私はデータ型が即座に割り当てられると思う)?
  2. Pythonは64ビットまたは32ビットの浮動小数点を使用しますか?
  3. 浮動小数点精度を削減したり、intに変換する関数はありますか?

親切に私を助けてください。これらの質問はばかげているかもしれませんが、プログラミングに関する知識はあまりありません。

おかげで...

+3

数字の多いコードをお持ちの場合は、Numpyを使用する必要があります。 –

+4

コードを投稿した方が、はるかに優れたソリューションを提供できます。たくさんある場合は、そのほとんどがどのように見えるかを表現してください。 (短くしてください) – Jon

+0

こんにちは、コードは巨大なデータを使用しており、プロセッサは複雑さを処理することができません。私はすでにNumpyを使用しています。あなたはあなたの提案を詳述できますか? – user1098635

答えて

1

すでにnumpyを使用している場合、あなたはあなたが欲しいタイプ(documentation)にdtypeフィールドを設定することができます。そこには入力のために少し柔軟性がありますが、一般的にはPythonの可変精度に対して多くの制御をするつもりはありません。 Cythonからの静的型を使用するという構造的なオーバーヘッドを経験したいと思っているのであれば、運が良いかもしれませんが、プログラミングに慣れていない方が最適なルートです。

これ以外にも、実際の問題と、可変精度が最適化に最適な場所であると感じている理由については、私たちに多くのことを教えていただいていません。

0

純粋なCPython(sans numpyなど)の浮動小数点数は、C double型として実装されています。 http://www.ibm.com/developerworks/opensource/library/os-python1/

はい、型は変数ではなく値に関連付けられています。 isinstance(何か、浮動小数点数)を使って何かがPythonの浮動小数点数であることを確認できます。

objgraphを試して、何があなたのメモリを使用しているかを確認することができます。 http://mg.pov.lt/objgraph/

メモリがリークしているか、ガベージコレクションが必要な可能性もあります。そしてあなたのマシンにはメモリがあまりないかもしれません。窮屈なメモリの問題で少し余分なRAMやスワップスペースを投げるのが安いこともあります。

低精度の代替数値表現を使用すると、おそらくhttp://pypi.python.org/pypi/Simple%20Python%20Fixed-Point%20Module/0.6?のようになる可能性があります。