Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

156
Visualizações
Cola de multiprocesamiento frente a grupo

Estoy teniendo más dificultades para tratar de averiguar la diferencia en el uso entre multiprocessing.Pool y multiprocessing.Queue .

Para ayudar, este es un fragmento de código que es un ejemplo básico de lo que estoy tratando de hacer.

 def update(): def _hold(url): soup = BeautifulSoup(url) return soup def _queue(url): soup = BeautifulSoup(url) li = [l for l in soup.find('li')] return True if li else False url = 'www.ur_url_here.org' _hold(url) _queue(url)

Estoy tratando de ejecutar _hold() y _queue() al mismo tiempo. No estoy tratando de que se comuniquen entre sí, por lo que no hay necesidad de Pipe . update() se llama cada 5 segundos.

Realmente no puedo entender la diferencia entre crear un grupo de trabajadores o crear una cola de funciones. ¿Alguien puede ayudarme?

Las funciones reales _hold() y _queue() son mucho más elaboradas que el ejemplo, por lo que en realidad es necesaria la ejecución simultánea, solo pensé que este ejemplo sería suficiente para hacer la pregunta.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

El Pool y la Queue pertenecen a dos niveles diferentes de abstracción.

El grupo de trabajadores es un paradigma de diseño concurrente que tiene como objetivo abstraer mucha lógica que, de lo contrario, necesitaría implementar usted mismo al usar procesos y colas.

El multiprocessing.Pool en realidad usa una Queue internamente para operar.

Si su problema es lo suficientemente simple, puede confiar fácilmente en un Pool . En casos más complejos, es posible que deba ocuparse de los procesos y las colas usted mismo.

Para su ejemplo específico, el siguiente código debería funcionar.

 def hold(url): ... return soup def queue(url): ... return bool(li) def update(url): with multiprocessing.Pool(2) as pool: hold_job = pool.apply_async(hold, args=[url]) queue_job = pool.apply_async(queue, args=[url]) # block until hold_job is done soup = hold_job.get() # block until queue_job is done li = queue_job.get()

También le recomiendo que eche un vistazo al módulo concurrent.futures . Como sugiere el nombre, esa es la implementación a prueba de futuro para el paradigma Pool of Workers en Python.

Puede volver a escribir fácilmente el ejemplo anterior con esa biblioteca, ya que lo que realmente cambia son solo los nombres de las API.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda