【发布时间】:2015-10-31 13:15:49
【问题描述】:
我正在尝试将多处理与 BeautifulSoup 一起使用,但遇到 maximum recursion depth exceeded 错误:
def process_card(card):
result = card.find("p")
# Do some more parsing with beautifulsoup
return results
pool = multiprocessing.Pool(processes=4)
soup = BeautifulSoup(url, 'html.parser')
cards = soup.findAll("li")
for card in cards:
result = pool.apply_async(process_card, [card])
article = result.get()
if article is not None:
print article
articles.append(article)
pool.close()
pool.join()
据我所知,card 的类型为 <class bs4.element.Tag>,问题可能与腌制此对象有关。目前尚不清楚我必须如何修改我的代码来解决这个问题。
【问题讨论】:
-
maximum recursion error Python 的可能重复答案在这里是相关的。此外,如果由于某种原因您不能遵循链接中的建议,另一种选择是使用更好的序列化程序,例如(我的代码)
dill,它用于multiprocess(具有更好序列化的multiprocessingfork )。不确定它是否适用于bs4对象。
标签: python-2.7 beautifulsoup pickle python-multiprocessing