2011-12-14 4 views
0

Я не программист, но сталкиваюсь с проблемой программирования. Мне нужно уменьшить потребление памяти кода Python. Один из вариантов - уменьшить переменную точность. В этой связи:Сокращение памяти

  1. Определить плавающие точки (как я полагаю, типы данных назначаются «на лету»)?
  2. Python использует 64-битные или 32-битные плавающие точки?
  3. Любая функция для уменьшения плавающей точности или преобразования в int?

Просьба помочь. Эти вопросы могут быть глупыми, но у меня очень мало знаний о программировании.

Благодаря ...

+3

Если у вас очень цифровой код, вы должны использовать Numpy. –

+4

Если вы разместили какой-то код, мы могли бы предложить вам гораздо лучшее решение. Если у вас есть много, просто опубликуйте представление о том, что больше всего похоже. (Короче!) – Jon

+0

Привет, В коде используются огромные данные, и процессор не способен справиться со сложностью. Я уже использую Numpy. Можете ли вы уточнить свое предложение? – user1098635

ответ

1

Если вы уже используете numpy вы можете установить dtype поле к типу, который вы хотите (documentation). Вы получите немного больше возможностей для ввода текста, но в целом вы не получите большого контроля над переменной точностью в Python. Вам также может быть повезло, если вы хотите просмотреть структурные издержки использования статических типов от Cython, хотя, если вы новичок в программировании, это может быть не лучший маршрут.

Помимо этого, вы не дали нам много работы относительно вашей фактической проблемы и почему вы чувствуете, что переменная точность - лучшее место для оптимизации.

0

Чистые CPython (без numpy и т. Д.) Поплавки реализованы как C удваивает. http://www.ibm.com/developerworks/opensource/library/os-python1/

Да, типы связаны со значениями, а не с переменными. Вы можете проверить, что что-то является плавающей точкой Python с isinstance (что-то, float).

Возможно, вы можете попробовать objgraph посмотреть, что использует ваша память. http://mg.pov.lt/objgraph/

Существует также вероятность утечки памяти или просто сбор мусора. И может случиться так, что ваша машина просто не имеет большой памяти - иногда дешевле бросать немного лишней памяти или даже немного больше пространства подкачки при ограниченной проблеме с памятью.

Возможно, что использование низкой точности, альтернативное числовое представление поможет - возможно, http://pypi.python.org/pypi/Simple%20Python%20Fixed-Point%20Module/0.6?.

Смежные вопросы