减少记忆力

时间:2011-12-14 20:25:43

标签: python memory floating-point

我不是程序员,但面临编程问题。我需要减少Python代码的内存消耗。一种选择是降低变量精度。在这方面:

  1. 识别浮点(因为我认为数据类型是动态分配的)?
  2. Python使用64位还是32位浮点?
  3. 任何降低浮动精度或转换为int的函数?
  4. 请帮助我。这些问题可能很愚蠢,但我对编程知之甚少。

    ...谢谢

2 个答案:

答案 0 :(得分:1)

如果您已在使用numpy,则可以将dtype字段设置为您想要的类型(documentation)。你可以在键盘上获得更多的灵活性,但一般来说,你不会在Python中对变量精度有很多控制。如果你想要使用来自Cython的静态类型的结构开销,你可能也会有一些运气,不过如果你不熟悉编程可能不是最好的路线。

除此之外,您还没有给我们很多关于您的实际问题的工作,以及为什么您认为变量精度是优化的最佳位置。

答案 1 :(得分:0)

Pure CPython(sans numpy等)浮动实现为C双打。 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?。