Возможность ошибки памяти?

a=raw_input() prefix_dict = {} for j in xrange(1,len(a)+1): prefix = a[:j] prefix_dict[prefix] = len(prefix) print prefix_dict 

Есть ли вероятность ошибки памяти в приведенном выше коде? Этот код работает на сервере, а сервер – четырехъядерные процессоры Xeon с 32-разрядным Ubuntu (Ubuntu 12.04 LTS). Для немногих случаев его работа и для немногих его отображение ошибки памяти. FYI: Я не знаю случаев, которые они тестируют, но входные данные – это буквы нижнего регистра. Размер ввода <= 10000

2 Solutions collect form web for “Возможность ошибки памяти?”

Объем памяти только для данных для этого будет 1 + 2 + 3 … + n-2 + n-1 + n, где n – длина ввода, другими словами, len(a) . Это работает до (n + 1) * n / 2. Если n равно 10 000, это составляет около 50 МБ строковых данных, и, кроме того, большое количество ОЗУ используется в словаре python для хранения 10 000 записей. Тестирование в моем ящике OSX кажется минимальным и действительно, если я запускаю этот код на нем, процесс показывает 53,9 МБ:

 str = "a" d = {} for i in xrange(10000): d[str] = i str = str + "a" 

Я не вижу ничего плохого в вашем коде, и когда я запускаю его на строке длиной 10 000 символов, он с радостью выплескивает около 50 мб для вывода, поэтому что-то еще должно идти не так.

Что показывает top как использование памяти для процесса?

Возможно, меньшая часть кода поможет:

 prefix_dict = { a[:j]:j for j in xrange(1, len(a) + 1) } 
  • Глубокая версия sys.getsizeof
  • Почему Python «Ошибка памяти» с списком `append ()` осталось много ОЗУ
  • Python 2.6 GC появляется для очистки объектов, но память не освобождается
  • Как сохранить массив в файле hdf5, который слишком велик для загрузки в память?
  • многопроцессорное копирование глобальной переменной памяти
  • Позволяет ли освобождение обрабатываться по-разному для небольших / больших массивов numpy?
  • Как найти дубликаты файлов в большой файловой системе, избегая при этом MemoryError
  • Как очистить переменные в ipython?
  • Python - лучший язык программирования в мире.