Soy completamente nuevo en multiprocesamiento. He estado leyendo documentación sobre el módulo de multiprocesamiento. Leí sobre Pool, Threads, Colas, etc., pero estoy completamente perdido.Qué estrategia usar con multiprocesamiento en python
Lo que quiero hacer con multiprocesamiento es que, convertir mi humilde descargador http, para trabajar con varios trabajadores. Lo que estoy haciendo en este momento es descargar una página, analizar la página para obtener enlaces interesantes. Continúa hasta descargar todos los enlaces interesantes. Ahora, quiero implementar esto con multiprocesamiento. Pero no tengo idea en este momento, cómo organizar este flujo de trabajo. Tenía dos pensamientos sobre esto. En primer lugar, pensé en tener dos colas. Una cola para los enlaces que deben descargarse, otra para que los enlaces sean analizados. Un trabajador, descarga las páginas y las agrega a la cola, que es para los elementos que se deben analizar. Y otro proceso analiza una página y agrega los enlaces que encuentra interesantes a la otra cola. Los problemas que espero de este enfoque son; En primer lugar, ¿por qué descargar una página a la vez y analizar una página a la vez? Además, ¿cómo sabe un proceso que hay elementos que se agregarán a la cola más tarde, después de agotar todos los elementos de la cola?
Otro enfoque que pensé usar es eso. Tener una función, que se puede llamar con una url como argumento. Esta función descarga el documento y comienza a analizarlo para los enlaces. Cada vez que encuentra un enlace interesante, crea instantáneamente un nuevo hilo que ejecuta una función idéntica a la suya. El problema que tengo con este enfoque es, ¿cómo puedo hacer un seguimiento de todos los procesos generados por todos lados, cómo sé si todavía hay procesos para ejecutar. Y también, ¿cómo puedo limitar el número máximo de procesos?
Así que estoy completamente perdido. ¿Alguien puede sugerir una buena estrategia y tal vez mostrar algunos códigos de ejemplo sobre cómo seguir con la idea?
Esto se ha discutido con cierta profundidad [anteriormente] (http://stackoverflow.com/questions/731993/multiprocessing-or-multithreading) – brc
¿Puedo sugerir que consulte la biblioteca de eventos? Puede encontrar que se adapta mejor a sus propósitos que usar multiprocesamiento. –