Я пытаюсь использовать многопроцессорных вместе с BeautifulSoup, но я встретив maximum recursion depth exceeded
ошибку:Multiprocessing BeautifulSoup bs4.element.Tag
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>
и проблема может иметь делать это с помощью травления этого объекта. Непонятно, как мне придется изменить код, чтобы решить эту проблему.
Возможный дубликат [максимальная ошибка Python рекурсии] (http://stackoverflow.com/questions/19529708/maximum-recursion-error-python) ответ уместно здесь. Кроме того, если вы по какой-то причине не можете следовать рекомендациям по ссылке, другой альтернативой является использование лучшего сериализатора, например (мой код) 'dill', который используется в' multiprocess' («многопроцессорная» вилка с лучшей сериализацией). Не уверен, что он работает для объектов 'bs4'. –