He estado usando BeautifulSoup para analizar archivos html, mientras que todos los scripts que escribo funcionan bien pero son lentos. Así que estoy experimentando con el uso del grupo de multiprocesamiento de trabajadores junto con BeautifulSoup para que mi programa pueda ejecutarse más rápido (tengo que abrir 100.000 - 1,000,000 de archivos html). El script que escribí es más complejo, pero he escrito un pequeño ejemplo aquí. Estoy tratando de hacer algo como esto y me siguen dando el errorError de profundidad de recursión al utilizar BeautifulSoup con el mapa de grupo de multiprocesamiento
'RuntimeError: nivel de recursividad superó mientras que el decapado de un objeto
código editado
from bs4 import BeautifulSoup
from multiprocessing import Pool
def extraction(path):
soup=BeautifulSoup(open(path),"lxml")
return soup.title
pool=Pool(processes=4)
path=['/Volume3/2316/http/www.metro.co.uk/news/852300-haiti-quake-victim-footballers-stage-special-tournament/crawlerdefault.html','/Volume3/2316/http/presszoom.com/story_164020.html']
print pool.map(extraction,path)
pool.close()
pool.join()
Después de hacer algunas buscar y buscar en algunas publicaciones, llegué a saber que el error se está produciendo porque BeautifulSoup excede la profundidad de la pila del intérprete de Python. Traté de aumentar el límite y ejecutar el mismo programa (subí a 3000) pero el error sigue siendo el mismo. Dejé de aumentar el límite porque el problema es con BeautifulSoup al abrir los archivos html.
El uso de multiprocesamiento con BeautifulSoup acelerará mi tiempo de ejecución, pero no puedo averiguar cómo aplicarlo para abrir los archivos.
¿Alguien tiene otro enfoque sobre cómo usar BeautifulSoup con multiprocesamiento o cómo superar este tipo de errores?
Cualquier tipo de ayuda será apreciada, estoy sentado durante horas tratando de arreglarlo y entiendo por qué estoy recibiendo el error.
Editar
He probado el código anterior con los archivos que he dado en los caminos y me dio la misma RuntimeError que el anterior
Los archivos se puede acceder aquí (http://ec2-23-20-166-224.compute-1.amazonaws.com/sites/html_files/)
El script anterior no genera el error que usted describe para mí. ¿Podría pegar el script más simple que haya probado realmente, y que _does_ genere este error? – senderle
Hola, gracias por la respuesta ... acabo de probar el código con las páginas html anteriores que he dado en el enlace y obtuve el error "RuntimeError: se excedió la profundidad máxima de recursión mientras se decapaba un objeto" Gracias por la ayuda – kich