Introdução à Concorrência
Deslize para mostrar o menu
Concorrência e paralelismo são termos frequentemente usados como sinônimos, mas descrevem abordagens diferentes para lidar com múltiplas tarefas. Concorrência refere-se à capacidade de um programa de gerenciar várias tarefas ao mesmo tempo, mas não necessariamente executando-as simultaneamente. Em vez disso, as tarefas podem se revezar utilizando os mesmos recursos, como um único núcleo de CPU, alternando rapidamente entre elas. Isso é especialmente útil para programas que passam tempo aguardando operações de entrada/saída (I/O), como leitura de arquivos ou conexões de rede.
Paralelismo, em contraste, significa realmente executar várias tarefas no mesmo exato momento. Isso é possível quando há mais de um núcleo de CPU disponível, permitindo que as tarefas sejam executadas verdadeiramente em paralelo. O paralelismo é especialmente importante para tarefas CPU-bound, que são limitadas pela velocidade do processador, como a realização de cálculos complexos.
Compreender a diferença entre tarefas CPU-bound e I/O-bound ajuda a escolher a abordagem correta. Tarefas CPU-bound são limitadas pela velocidade de computação, enquanto tarefas I/O-bound passam a maior parte do tempo aguardando a conclusão de operações externas, como acesso a disco ou respostas de rede. Em Python, a concorrência é frequentemente implementada usando threads, que são leves e podem ajudar com tarefas I/O-bound. Para tarefas CPU-bound, o multiprocessing, que utiliza processos separados, é mais eficaz porque as threads em Python são limitadas pelo Global Interpreter Lock (GIL).
Como visto no vídeo, a escolha entre concorrência e paralelismo depende da natureza da carga de trabalho do seu programa. Se suas tarefas estão aguardando por I/O, a concorrência com threads pode melhorar a eficiência. Se suas tarefas exigem muita computação, o paralelismo com múltiplos processos ajudará a aproveitar ao máximo o seu hardware.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo