MemoryError, python - PullRequest
       4

MemoryError, python

0 голосов
/ 07 ноября 2010

Я получил MemoryError при обработке файла .xml = 1,45 Гб. Я попытался запустить его на меньшем файле, и он работает, поэтому в коде не должно быть ошибок. Сам код подразумевает открытие XML-файла, выполнение каких-либо действий внутри и сохранение его обратно в новый текстовый файл. Я запускаю Win7 x86, 2 Гб оперативной памяти, Python 2.6

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    openfile('ukwiki-latest-pages-articles.xml')
  File "C:\Users\Vof Freeman\Desktop\Python\test.py", line 7, in openfile
    contents = F.read()
  File "C:\Python26\lib\codecs.py", line 666, in read
    return self.reader.read(size)
  File "C:\Python26\lib\codecs.py", line 466, in read
    newdata = self.stream.read()
MemoryError

Ответы [ 2 ]

8 голосов
/ 07 ноября 2010

Поскольку построение дерева в памяти нежелательно (и в вашем случае также непрактично, учитывая объем имеющейся у вас физической памяти), есть два метода, которые вы можете использовать с lxml :

  • Предоставление целевого класса анализатора
  • Использование метода iterparse

Обратитесь к документации здесь , чтобы увидеть, как это можно сделать.

0 голосов
/ 07 ноября 2010

Проще говоря, у вас недостаточно ОЗУ для чтения этого файла.Вы должны разбить его на более мелкие XML-файлы и прочитать его таким образом.

Тот факт, что он работал с меньшим файлом, говорит мне, что в вашем коде нет ничего плохого, просто ваше оборудование не может его обработать.

...