私は非常に大きなXMLファイルを持っています(正確には20GB、はい、それはすべて必要です)。私は、ファイルをロードしようとすると、私はこのエラーが表示されます。これは私がXMLファイル読み取りに、持っている現在のコードである巨大なXMLファイルを読み込んでMemoryErrorを扱う
Python(23358) malloc: *** mmap(size=140736680968192) failed (error code=12)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug
Traceback (most recent call last):
File "file.py", line 5, in <module>
code = xml.read()
MemoryError
:
今from bs4 import BeautifulSoup
xml = open('pages_full.xml', 'r')
code = xml.read()
xml.close()
soup = BeautifulSoup(code)
を、どのように私は排除しに行きますかこのエラーが発生し、スクリプトの作業を続けることができます。私はファイルを別々のファイルに分割しようとしますが、それがBeautifulSoupとXMLデータにどのように影響するかわからないので、私はむしろこれをやりません。
(XMLデータが多くのページから直接情報を使用して、異なる時間帯からデータをインポートするためにそれを使用して、私はボランティアのwikiからのデータベース・ダンプである)
20GBのRAMがありますか?もしそうでなければ、たとえあなたがこれを動かすことができても、それは内外にスワップするほど堪えがたく遅くなるでしょう。あなたはlxmlのようなもので一度にチャンクだけを操作する方法があるかもしれません。 – Dougal