2011-12-14 112 views
0

我不是程序員,但面臨編程問題。我需要減少Python代碼的內存消耗。一種選擇是降低可變精度。在這方面:減少內存

  1. 確定浮點(因爲我認爲數據類型是動態分配的)?
  2. Python使用64位或32位浮點?
  3. 任何函數來減少浮動精度或轉換爲int?

請幫助我。這些問題可能很愚蠢,但我對編程知識的瞭解不多。

謝謝...

+3

如果你有一個高度數字的代碼,那麼你應該使用Numpy。 – 2011-12-14 20:27:52

回答

1

如果您已經使用numpy可以將dtype字段設置爲你想要的類型(documentation)。你會在打字時獲得更多的靈活性,但總的來說,你不會對Python中的變量精度有很大的控制。如果您想要了解使用Cython的靜態類型的結構開銷,您可能也會有一些運氣,不過如果您對編程不熟悉,那麼可能不是最佳路線。

除此之外,您還沒有給我們很多關於您的實際問題的工作,以及爲什麼您覺得變量精度是優化的最佳位置。

0

純CPython(sans numpy等)浮點數實現爲C雙精度值。 http://www.ibm.com/developerworks/opensource/library/os-python1/

是的,類型與值相關,而不是變量。你可以用isinstance(某些東西,浮點數)檢查是否是Python浮點數。

你也許可以嘗試objgraph,看看你的記憶是什麼。 http://mg.pov.lt/objgraph/

還有一種可能是你正在泄漏內存,或者只是需要垃圾回收。這可能是因爲你的機器沒有太多的內存 - 有時在受限的內存問題下,拋出一些額外的內存或更多的交換空間會更便宜。

使用低精度的替代數字表示可能會有所幫助 - 可能是http://pypi.python.org/pypi/Simple%20Python%20Fixed-Point%20Module/0.6