我的代码因内存问题而被杀死

时间:2015-06-30 15:06:33

标签: shell memory-leaks beautifulsoup out-of-memory

所以我写了这个脚本来浏览一个大的wiki XML转储并拉出我想要的页面。但是,每次运行它时,内核都会显示“KILL'我在阅读之后假​​设这是一个内存问题,但我不确定脚本中的内存问题在哪里以及是否有任何减少虚拟内存使用的技巧。

这是我的代码(我假设问题出在BeautifulSoup分区,因为页面文件非常小。

from bs4 import BeautifulSoup
import sys

pages_file = open('pages_file.txt', 'r')

#Preprocessing
pages = pages_file.readlines()
pages = map(lambda s: s.strip(), pages)
page_titles=[]
for item in pages:
  item = ''.join([i for i in item if not i.isdigit()])
  item = ''.join([i for i in item if ord(i)<126 and ord(i)>31])
  item = item.replace(" ","")
  item = item.replace("_"," ")
  page_titles.append(item)


with open(sys.argv[1], 'r') as wiki:    
  soup = BeautifulSoup(wiki)
wiki.closed
wiki_page = soup.find_all("page")
del soup
for item in wiki_page:
  title = item.title.get_text()
  if title in page_titles:
      print item
  del title

1 个答案:

答案 0 :(得分:1)

如果XML文件非常大,您可以使用Soup Strainer来处理它。请参阅http://www.crummy.com/software/BeautifulSoup/bs4/doc/#parsing-only-part-of-a-document处的文档。在您的情况下,您可以轻松搜索title标记,只要您根据列表检查每个标记。

注意你不应该像这样使用'del'语句,但我认为你这样做是为了解决错误?