2015-03-06 5 views
0

Я пытаюсь понять причину следующего MemoryError. Есть ли какой-либо предопределенный предел для словарей в python?Python Dictionary Размер Максимальный предел

self.text длинная строка, считанная из файла (около 4,5 MB) L равна 4641652

L = len(self.text) 
    test = {} 
    for i in xrange(L,0,-1): 
     try: 
      test[i] = self.text[i-1:] 
     except MemoryError: 
      print "Memory Error at the " + str(i) +"th iteration!" 
      print sys.getsizeof(test) 
      print len(test) 
      exit() 

Выход

Memory Error at the 4577890th iteration! 
1573004 
63762 

Я запустившего программу на машине окон с 16 гб бара, если это помогает.

+0

Что вы не понимаете? У вас не хватает памяти. Мы можем сказать больше, поскольку мы понятия не имеем, что такое я, текст, L и т. Д. – Marcin

+0

Wow быстрый ответ @Marcin. Я был в процессе редактирования моего вопроса, чтобы ответить на этот вопрос. –

+0

yeh. обычно ppl читает вопросы в тот момент, когда они появляются. Так что его довольно быстро :-) – Marcin

ответ

0

Вы сохраняете в своем цикле 1 + 2 + 3 + ... + 4641650 + 4641651 + 4641652 ... байты. По рассматриваемой итерации вы прошли 63762 раза, что составляет 2032796322 байт. Еще одна двойка и вот, вы находитесь за 32-битным целым пределом, который кажется разумным местом для запуска в память ошибки для меня.

+0

кажется разумным для меня слишком Rich –

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