O problema que tive foi que Pool
usei todos os processos, mesmo tendo passado um inteiro no processes
argumento, Pool
que era muito menor que o número total de núcleos que o servidor tinha.
Eu uso pools de multiprocessamento para executar tarefas de longa duração. Por exemplo, executo o seguinte código simples.
n_cores = 20
with Pool(n_cores) as pool:
results = pool.map(example_function, args)
Isso é muito mais do que o número de núcleos que configurei, mas limitei o número de núcleos a 20 para usar quantos eu precisasse. Executei o código esperando que funcionasse bem, e ele concluiu a tarefa muito mais rápido do que usando um único núcleo. Recentemente, verifiquei o uso de núcleos por meio do htop
comando no Ubuntu e me deparei com uma realidade chocante. Todos os núcleos estão sendo usados enquanto a tarefa está em execução no pool, o que não era o que eu pretendia (usar 100% para todos os processos).
Gostaria de saber se existe uma solução alternativa para esse problema. Se não houver, precisamos considerar outros métodos, como o MPI.
Se estiver faltando alguma coisa, por favor me avise.
Obrigado.