15.12.2022 Views

Python Eficaz

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

disso, mas muitos outros algoritmos matemáticos trabalham de forma

semelhante.

Caso a computação que se queira fazer não possua essas características, o peso

adicional na CPU provocado por multiprocessing pode impedir que o programa

seja acelerado pelo paralelismo. Quando nos deparamos com situações assim, o

mesmo multiprocessing oferece recursos mais avançados de memória

compartilhada, travas interprocessos, filas e substitutos (proxies). Todos esses

recursos, todavia, são por demais complexos. Já é bastante difícil entender o

funcionamento dessas ferramentas no espaço de memória de um único processo

compartilhado por outras threads do Python. Aumentar ainda mais essa

complexidade para outros processos e incluir sockets na receita torna tudo isso

difícil demais de entender.

Minha sugestão é: evite usar diretamente os recursos de multiprocessing e, em

vez disso, empregue os recursos mais “mastigados” pelo módulo

concurrent.futures, bem mais simples. Comece usando a classe

ThreadPoolExecutor para executar funções isoladas e de alta alavancagem em

threads. Mais tarde, substitua a classe por ProcessPoolExecutor para ter um

incremento na velocidade. Por fim, depois de ter tentado todas as opções mais

simples, aventure-se em usar diretamente o módulo multiprocessing.

Lembre-se

• Transferir os gargalos de CPU para as extensões em C pode ser uma maneira

bastante eficiente de aumentar o desempenho enquanto maximiza seu

investimento no código em Python. Entretanto, o custo disso é muito alto e

pode introduzir bugs.

• O módulo multiprocessing oferece ferramentas poderosas que podem

paralelizar certos tipos de computação em Python com um mínimo de

esforço.

• O poder de multiprocessing é mais bem utilizado por meio do módulo nativo

concurrent.futures e sua classe ProcessPoolExecutor que, por sua natureza, é

bastante simples.

• As partes avançadas do módulo multiprocessing devem ser evitadas porque

são complexas demais.

www.full-ebook.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!