Python · Intermediário · Inglês · Técnico
multiprocessing
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.