我的代码总是因为内存问题而失效



所以我写这个脚本是为了浏览一个大型wiki XML转储并提取出我想要的页面。然而,每次我运行它时,内核都会显示"Killed"。我想这是一个内存问题,但我不确定内存问题在我的脚本中的哪里,也不确定是否有任何技巧可以减少虚拟内存的使用。

这是我的代码(我认为问题出在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

如果XML文件很大,您可以使用Soup Strainer来处理它http://www.crummy.com/software/BeautifulSoup/bs4/doc/#parsing-仅限于文档的一部分。在您的情况下,您可以简单地搜索title标签,假设您根据列表检查每个标签。

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