Script de multiprocessamento Python congela aparentemente sem erro
Estou tentando usar omultiprocessing
pacote para chamar uma função (vamos chamá-lomyfunc
) em paralelo, usando especificamentepool.map
isto épool.map(myfunc, myarglist)
. Quando eu simplesmente pulomyarglist
sem utilizarmultiprocessing
não há erros, o que deve ser o caso, porque todas as operações emmyfunc
são chamados dentro de umtry
quadra. No entanto, quando eu chamo a função usandopool.map
o script invariavelmente para de ser executado, ou seja, para de imprimir um "myfunc done!" dentro da minha função e os processos param de usar as CPUs, mas nunca retornamresultlist
. Estou executando o python 2.7 do terminal no ubuntu 12.04. O que poderia causar isso e como devo corrigir / solucionar o problema?
cpu_count = int(multiprocessing.cpu_count())
pool = Pool(processes = cpu_count)
resultlist = pool.map(myfunc, myarglist)
pool.close()
Atualizar Um problema ao usar o multiprocessamento pode ser o tamanho do objeto, se você acha que pode ser um problema, consulteresponda. Como a resposta observa "Se essa [solução] não funcionar, talvez o material que você está retornando de suas funções não seja selecionável e, portanto, incapaz de passar pelas Filas corretamente". O multiprocessamento passa objetos entre processos, separando-os. Acontece que um ou dois dos meus objetos tiveram sopa deBeautifulSoup
que não decaparia.