We may earn an affiliate commission when you visit our partners.
Geek University

Antigamente para melhorarmos a performance de programas bastava executá-los em hardwares mais novos e mais rápidos já que a Lei de Moore dizia que a cada 18 meses teríamos o dobro da capacidade de processamento.

Esta lei não funciona mais, e agora as fabricantes estão adicionando mais núcleos (cores) aos processadores para aumentar o poder de processamento.

Por padrão a linguagem Python executa seus programas em um único processador e em uma única thread.

Read more

Antigamente para melhorarmos a performance de programas bastava executá-los em hardwares mais novos e mais rápidos já que a Lei de Moore dizia que a cada 18 meses teríamos o dobro da capacidade de processamento.

Esta lei não funciona mais, e agora as fabricantes estão adicionando mais núcleos (cores) aos processadores para aumentar o poder de processamento.

Por padrão a linguagem Python executa seus programas em um único processador e em uma única thread.

Neste curso você aprenderá, de forma simples, objetiva e prática, a fazer o uso correto de threads, multiprocessamento, programação assíncrona e levar seus programas Python ao extremo com Cython.

Desta forma você poderá fazer com que seus programas sejam mais eficientes, responsivos e rápidos, pois eles serão executados em vários núcleos (cores) simultaneamente.

Este é um curso definitivo sobre programação paralela em Python. Ele cobre os conceitos básicos altamente testados e comprovados, como threads e multiprocessamento, bem como os recursos assíncronos mais modernos baseados em Python 3.7+ com async e await.

Além dos conceitos básicos e APIs para programação simultânea, você aprenderá as práticas recomendadas e como escolher entre as várias APIs, bem como como usá-las juntas para obter a maior vantagem.

Você aprenderá:

- Trabalhar com Threads em Python;- Trabalhar com Multiprocessamento em Python;- Trabalhar com Programação Assíncrona em Python;- Executar seus programas com velocidade extrema com Cython;- (Conteúdo adicional) Introdução ao FastAPI;- Aulas práticas;- E muito mais.  

Enroll now

What's inside

Syllabus

Apresentação
Sobre o curso
Informações Importantes
Introdução à Programação Concorrente e Assíncrona
Read more
O que vamos aprender nesta seção?
Conceitos sobre concorrência e programação assíncrona
Tipos de concorrência
Concorrência em Python
Global Interpreter Lock - GIL
Exercício Prático: Performance Padrão Python
Mão na massa geek!
Recapitulando
Exercício Prático: Abstraindo Mecanismos de Concorrência
Threads em Python
Introdução às Threads
Exercício Prático: Criando Threads Simples em Python
Exercício Prático: Criando Threads Múltiplas em Python
Entendendo o funcionamento das threads
Sincronização de Threads
Comunicação entre Threads usando Queues
Exercício Prático: Segurança ao usar Threads - Parte 1
Exercício Prático: Segurança ao usar Threads - Parte 2
Exercício Prático: Performance Python Threads
Multiprocessamento em Python
Exercício Prático: Performance Python Assíncrono
Introdução ao Multiprocessamento
Processos vs Threads
Exercício Prático: Conhecendo a API de Multiprocessamento do Python
Exercício Prático: Trabalhando com Pools de Processos
Exercício Prático: Comunicação entre processos
Exercício Prático: Compartilhando estados entre processos
Exercício Prático: Sincronização de processos
Exercício Prático: Performance Python Multiprocessos
Programação Assíncrona em Python
Compreendendo os conceitos do Cython
Introdução à programação Assíncrona
Exercício Prático: Trabalhando com Assincronia em Thread Simples
Exercício Prático: Eventos Multitarefas com Loop de Eventos e Corrotinas
Exercício Prático: Compreendendo o Asyncio
Exercício Prático: Executando Tarefas em Paralelo
Exercício Prático: Bibliotecas Async IO
Combinando Corrotinas com Threads e Processos
Python ao Extremo com Cython
Introdução ao Cython
Comparando a sintaxe de Python vs Cython
Exercício Prático: Seu primeiro programa com Cython
(Extra) Encontrando o gargalo do programa com Cprofile
Exercício Prático: Seu programa Python ao extremo com Cython
(Extra) Introdução à FastAPI: Um framework web assíncrono
Introdução ao FastAPI
Conhecendo os recursos do FastAPI
Exercício prático: Escrevendo sua primeira API com FastAPI
Encerramento
Recapitulando todo o curso
Quais os próximos passos?

Save this course

Save Programação Concorrente e Assíncrona com Python to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Programação Concorrente e Assíncrona com Python with these activities:
Revisar conceitos básicos de programação
Refresque seus conhecimentos sobre os fundamentos da programação para entender melhor os conceitos de concorrência e assincronismo.
Show steps
  • Revisar estruturas de dados básicas (listas, dicionários).
  • Revisar conceitos de algoritmos e complexidade.
  • Praticar exercícios de lógica de programação.
Revisar 'Python Cookbook'
Consulte este livro para obter exemplos práticos e soluções para problemas comuns de concorrência e assincronismo em Python.
Show steps
  • Leia os capítulos sobre threads e multiprocessamento.
  • Analise os exemplos de código e adapte-os para seus próprios projetos.
Revisar 'Effective Concurrency in Python'
Este livro fornece uma visão abrangente das técnicas de concorrência em Python, ajudando você a escolher a melhor abordagem para diferentes cenários.
Show steps
  • Leia os capítulos sobre threads, multiprocessamento e asyncio.
  • Compare as diferentes abordagens e identifique seus casos de uso ideais.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Praticar com threads e filas
Reforce sua compreensão de threads e filas criando pequenos programas que utilizem esses conceitos para resolver problemas práticos.
Show steps
  • Crie um programa que use threads para baixar vários arquivos simultaneamente.
  • Implemente um sistema de produtor-consumidor usando threads e filas.
  • Experimente diferentes tamanhos de fila e observe o impacto no desempenho.
Criar um servidor web assíncrono simples
Aplique seus conhecimentos de programação assíncrona para construir um servidor web que possa lidar com várias requisições simultaneamente.
Show steps
  • Escolha um framework assíncrono como asyncio ou aiohttp.
  • Implemente o tratamento de requisições HTTP usando corrotinas.
  • Adicione suporte para rotas e manipulação de dados.
  • Teste o servidor com várias requisições simultâneas.
Criar um guia de referência rápida para asyncio
Compile um guia de referência rápida com os principais conceitos e funções do asyncio para facilitar o uso da biblioteca em projetos futuros.
Show steps
  • Reúna informações sobre os principais componentes do asyncio (event loops, corrotinas, tasks).
  • Crie exemplos de código para demonstrar o uso de cada componente.
  • Organize as informações em um formato fácil de consultar.
Escrever um artigo sobre GIL
Aprofunde sua compreensão do Global Interpreter Lock (GIL) escrevendo um artigo que explique seus impactos na concorrência em Python.
Show steps
  • Pesquise sobre o GIL e seu funcionamento.
  • Explique como o GIL afeta o desempenho de threads em Python.
  • Discuta alternativas para contornar as limitações do GIL.
  • Publique o artigo em um blog ou plataforma de artigos técnicos.

Career center

Learners who complete Programação Concorrente e Assíncrona com Python will develop knowledge and skills that may be useful to these careers:
Desenvolvedor Python
Um desenvolvedor Python se especializa na criação de aplicativos usando a linguagem Python. Este curso é particularmente benéfico porque aborda técnicas avançadas de Python, como threads, multiprocessamento e programação assíncrona. Um desenvolvedor Python pode usar este curso para melhorar o desempenho de seus aplicativos, aproveitando vários núcleos de processador e técnicas de programação assíncrona. O curso também ensina como usar Cython para otimizar o código Python, o que pode ser vital para aplicativos de alto desempenho. Além disso, o curso cobre o FastAPI, uma estrutura da web assíncrona, que é essencial para desenvolver aplicativos da web modernos.
Engenheiro de Software
Um engenheiro de software cria aplicativos e sistemas de software. Este curso em "Programação Concorrente e Assíncrona com Python" é valioso porque a concorrência e a programação assíncrona são cada vez mais importantes no desenvolvimento de software moderno. O curso ensina como usar threads, multiprocessamento e programação assíncrona em Python, permitindo que um engenheiro de software escreva aplicativos mais eficientes e responsivos. A capacidade de usar Cython para acelerar programas Python é muito útil. O curso também pode ajudar um engenheiro de software a entender como usar o FastAPI, uma estrutura da web assíncrona.
Cientista de Dados
Um cientista de dados analisa grandes conjuntos de dados para obter insights e tomar decisões informadas. Este curso pode ajudar um cientista de dados a acelerar seus fluxos de trabalho de análise de dados, aproveitando threads, multiprocessamento e programação assíncrona. Ao paralelizar tarefas como limpeza de dados, engenharia de recursos e treinamento de modelos, um cientista de dados pode reduzir significativamente o tempo necessário para concluir seus projetos. Além disso, o curso ensina como usar Cython para otimizar o código Python para tarefas computacionalmente intensivas, o que pode ser especialmente útil para trabalhar com conjuntos de dados grandes. Com este curso, um cientista de dados pode trabalhar de forma mais eficiente e eficaz.
Desenvolvedor de Jogos
Um desenvolvedor de jogos cria a lógica, a programação e o código de um jogo. Este curso em "Programação Concorrente e Assíncrona com Python" pode ser particularmente benéfico para desenvolvedores de jogos, pois a concorrência e a programação assíncrona podem ajudar a melhorar o desempenho e a capacidade de resposta dos jogos. O curso ensina como usar threads e multiprocessamento para executar tarefas em segundo plano, como carregar ativos ou processar a entrada do usuário, sem interromper o loop principal do jogo. A capacidade de usar Cython para acelerar o código Python também é valiosa para otimizar o desempenho do jogo. O curso ajuda um desenvolvedor de jogos a criar jogos mais suaves e responsivos.
Arquiteto de Software
Um arquiteto de software é responsável por projetar a estrutura geral de um sistema de software. Este curso pode ajudar um arquiteto de software a tomar decisões informadas sobre como projetar sistemas concorrentes e assíncronos. O curso ensina os princípios da concorrência e da programação assíncrona, bem como as compensações entre diferentes abordagens. Ao entender as várias opções disponíveis, um arquiteto de software pode projetar sistemas mais escaláveis, responsivos e resilientes. Além disso, o curso ensina como usar Cython para otimizar o desempenho de componentes críticos, o que pode ser vital para sistemas de alto desempenho, além do uso do framework FastAPI.
Engenheiro de Aprendizado de Máquina
Um engenheiro de aprendizado de máquina cria e implanta modelos de aprendizado de máquina. Este curso pode ajudar um engenheiro de aprendizado de máquina a melhorar o desempenho de seus modelos paralelisando tarefas como pré-processamento de dados, treinamento de modelos e avaliação. O curso ensina como usar threads, multiprocessamento e programação assíncrona para acelerar esses fluxos de trabalho. Além disso, o curso ensina como usar Cython para otimizar o código Python para tarefas computacionalmente intensivas, o que pode ser especialmente útil para treinar modelos grandes. Esse curso pode lhe ser útil pois oferece ferramentas para otimizar o ciclo de vida do aprendizado de máquina.
Engenheiro de DevOps
Um engenheiro de DevOps automatiza e simplifica o processo de lançamento de software. Ao abordar threading, programação assíncrona e multiprocessamento em Python, este curso pode ajudar um engenheiro de DevOps a automatizar tarefas de forma mais eficiente, como construir e implantar aplicativos. O curso pode ser usado para melhorar o desempenho de scripts de automação e ferramentas de infraestrutura, ajudando o engenheiro de DevOps a garantir que os aplicativos sejam lançados de forma rápida e confiável. Este curso pode ser útil porque também aborda otimizações para o código Python com Cython.
Administrador de Sistemas
Um administrador de sistemas é responsável por gerenciar e manter sistemas de computadores. Este curso pode ajudar um administrador de sistemas a automatizar tarefas, como monitorar o desempenho do sistema, gerenciar contas de usuários e implantar atualizações de software. Ao aprender como escrever scripts Python concorrentes e assíncronos eficientes, um administrador de sistemas pode reduzir o tempo necessário para concluir essas tarefas. Além disso, o curso pode ajudar um administrador de sistemas a entender como solucionar problemas de desempenho relacionados à concorrência e à programação assíncrona. Por fim, o curso pode ser útil porque também aborda como otimizar o código Python com Cython.
Testador de Software
Um testador de software é responsável por garantir a qualidade do software. Ao cobrir threading, programação assíncrona e multiprocessamento em Python, este curso pode auxiliar um testador de software em automatizar testes e simular cenários simultâneos para identificar possíveis problemas de concorrência em aplicativos. Ao entender como as threads e os processos interagem, um testador de software pode projetar testes mais eficazes para descobrir bugs relacionados a condições de corrida e outros problemas de concorrência. Por fim, o curso pode ser útil porque também aborda otimizações para o código Python com Cython.
Analista de Dados
Um analista de dados examina dados para identificar tendências e insights. Um analista de dados pode se beneficiar deste curso fazendo com que seus scripts Python funcionem de forma mais rápida e eficiente, especialmente ao lidar com grandes conjuntos de dados. Ao aprender técnicas de concorrência e programação assíncrona, um analista de dados pode paralelizar tarefas de processamento de dados, reduzir o tempo de execução e obter insights mais rapidamente. Além disso, o curso pode ser útil no uso do otimizador de código Python Cython.
Especialista em Segurança Cibernética
Um especialista em segurança cibernética protege os sistemas de computador contra ameaças cibernéticas. Em particular, fazer este curso pode ajudar um especialista em segurança cibernética a criar ferramentas e scripts mais eficazes para análise de segurança, teste de penetração e resposta a incidentes. Ao aprender como usar a programação concorrente e assíncrona em Python, eles podem desenvolver ferramentas que podem lidar com várias tarefas simultaneamente, como digitalizar redes, analisar registros e monitorar o tráfego de rede. Além disso, o curso pode ser útil porque também aborda otimizações para o código Python com Cython.
Cientista de Pesquisa
Um cientista de pesquisa conduz pesquisas científicas. A cobertura de threads, programação assíncrona e multiprocessamento em Python pode auxiliar um cientista de pesquisa a acelerar simulações computacionais, processamento de dados e tarefas de análise. Ao aprender como paralelizar esses fluxos de trabalho usando os módulos de threading e multiprocessamento do Python, um cientista de pesquisa pode reduzir significativamente o tempo necessário para concluir seus projetos. Além disso, o curso pode ser útil porque também aborda otimizações para o código Python com Cython.
Consultor de TI
Um consultor de TI fornece consultoria especializada em tecnologia da informação para as organizações. Este curso pode ajudar um consultor de TI para recomendar e implementar soluções de software eficientes e escaláveis para clientes que usam Python. O curso ensina técnicas avançadas de programação em Python, como threads, multiprocessamento e programação assíncrona, que são essenciais para construir aplicativos de alto desempenho. O curso também ensina como usar Cython para otimizar o código Python, o que pode ser vital para aplicativos de alto desempenho.
Analista de negocios
Um analista de negócios identifica as necessidades de negócios e propõe soluções. Fazer este curso pode ajudar um analista de negócios a entender como a concorrência e a programação assíncrona podem melhorar o desempenho das aplicações de software. Ao obter conhecimento dessas técnicas, um analista de negócios pode comunicar de forma mais eficaz os benefícios potenciais de aplicativos paralelos e assíncronos para as partes interessadas. Além disso, o analista de negócios pode usar esse conhecimento para ajudar a arquitetar requisitos técnicos para um melhor uso de recursos.
Gerente de Projetos
Um gerente de projetos planeja, executa e fecha projetos. Este curso pode ajudar um gerente de projetos a entender melhor os desafios técnicos envolvidos no desenvolvimento de aplicativos concorrentes e assíncronos. Ao conhecer os princípios e técnicas de programação concorrente e assíncrona, um gerente de projetos pode gerenciar de forma mais eficaz as equipes de desenvolvimento de software e garantir que os projetos sejam concluídos no prazo e dentro do orçamento. Além disso, ele pode ajudar a tomar decisões informadas.

Reading list

We've selected one books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Programação Concorrente e Assíncrona com Python.
Este livro é um recurso valioso para programadores Python de todos os níveis. Ele oferece soluções práticas para uma ampla gama de problemas de programação, incluindo concorrência e programação assíncrona. Embora não seja um livro introdutório, ele fornece exemplos detalhados e explicações claras que podem ajudar a aprofundar sua compreensão dos tópicos abordados no curso. É uma referência útil para ter à mão durante e após o curso.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser