ExpertiDict

Python · Intermediário · Inglês · Técnico

multiprocessing

/ˌmʌltiˈpɹɑsɛsɪŋ/substantivo

Módulo da biblioteca padrão que cria processos separados do Python, cada um com seu interpretador e seu GIL, para usar vários núcleos de CPU em cálculos pesados.

Onde usar

É a saída clássica quando threads não aceleram código de CPU por causa do GIL. Os dados trafegam entre processos por serialização (pickle), o que tem custo.

Em código

from multiprocessing import Pool

def quad(n):
  return n * n

if __name__ == '__main__':
  with Pool(2) as p:
    print(p.map(quad, [1, 2, 3]))

Exemplos

Use multiprocessing for the CPU-heavy part.

Use multiprocessing para a parte pesada de CPU.

Passing big objects between processes is slow because of pickling.

Passar objetos grandes entre processos é lento por causa do pickling.

Cuidado

No Windows e no macOS, o código que cria processos deve ficar sob if __name__ == '__main__'; sem isso, o módulo é reimportado em cada filho e causa erro.

Veja também

Todos os termos de Python