async & await
da teoria à prática
Julio Freitas
juliofreitas.net
@juliomfreitas
github.com/juliomfreitas
julio.martins.fre...
Roadmap
1. Modelos de Programação Concorrente
2. Solução Definida
3. Suporte Teórico
“programming is thinking
not typing”
paradigmas de
programação
concorrente
Programação
Linear
Programação Linear
Uma tarefa após a outra
Ordem de execução bem definida
Programação
Paralela
Programação Paralela
Máquinas/CPUs diferentes executando tarefas
Arquitetura cara como um todo
Comunicação entre as tarefa...
Programação
Concorrente
(threads)
Programação Concorrente (threads)
Necessário controlar a quantidade de threads, alocar
threads/core
Criar uma thread é con...
Programação
Concorrente
(assíncrona)
Programação Concorrente (async)
A ideia é processar outras coisas enquanto espera algum
recurso estar disponível
Requisiçã...
Programação Concorrente (async)
Menos controle sobre infraestrutura de execução (pool,
threads/core…)
Aproveita-se as thre...
programação
assíncrona
assyncio (py3.5)
Coroutine
Tarefa assíncrona
Define quando suspender a si mesma
EventLoop
Controlador das execuções
As corrotinas não interagem diretamente com o EventLoop
Quando uma corrotina decide se...
EventLoop
Em python, o usuário define o início e o final do loop de
tarefas assíncronas
asyncio
Elegante
É como se o código fosse linear
asyncio
mais?
continuations
futures and promises
Dúvidas?
Obrigado!
<juliofreitas.net>
Introdução a Programação Assíncrona Python 3.5 asyncio
Próximos SlideShares
Carregando em…5
×

Introdução a Programação Assíncrona Python 3.5 asyncio

260 visualizações

Publicada em

Apresentação do 16° Encontro Python BH

Introdução à programação assíncrona.

Paradigmas de programação concorrente;
Conceitos de programação assíncrona;
Programação assíncrona em Python 3.5;

A abordagem escolhida aqui foi passar pelas principais abstrações e conceitos que envolvem programação paralela, dai então entrar de maneira apenas suficientemente profunda com um exemplo na programação em python

Publicada em: Engenharia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
260
No SlideShare
0
A partir de incorporações
0
Número de incorporações
6
Ações
Compartilhamentos
0
Downloads
14
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Introdução a Programação Assíncrona Python 3.5 asyncio

  1. 1. async & await da teoria à prática Julio Freitas juliofreitas.net @juliomfreitas github.com/juliomfreitas julio.martins.freitas@gmail.com py3.5
  2. 2. Roadmap 1. Modelos de Programação Concorrente 2. Solução Definida 3. Suporte Teórico
  3. 3. “programming is thinking not typing”
  4. 4. paradigmas de programação concorrente
  5. 5. Programação Linear
  6. 6. Programação Linear Uma tarefa após a outra Ordem de execução bem definida
  7. 7. Programação Paralela
  8. 8. Programação Paralela Máquinas/CPUs diferentes executando tarefas Arquitetura cara como um todo Comunicação entre as tarefas normalmente é lenta
  9. 9. Programação Concorrente (threads)
  10. 10. Programação Concorrente (threads) Necessário controlar a quantidade de threads, alocar threads/core Criar uma thread é considerado caro em termos de processamento e alocação exigidos É preciso sincronizá-las manualmente Impossível prever a ordem de execução, definida pelo SO
  11. 11. Programação Concorrente (assíncrona)
  12. 12. Programação Concorrente (async) A ideia é processar outras coisas enquanto espera algum recurso estar disponível Requisição a serviço externo Longa query em um banco de dados Abrir
  13. 13. Programação Concorrente (async) Menos controle sobre infraestrutura de execução (pool, threads/core…) Aproveita-se as threads que já existem do sistema (1...n) A ideia é que a tarefa executada abdica do controle enquanto espera pelo seu recurso bloqueante
  14. 14. programação assíncrona assyncio (py3.5)
  15. 15. Coroutine Tarefa assíncrona Define quando suspender a si mesma
  16. 16. EventLoop Controlador das execuções As corrotinas não interagem diretamente com o EventLoop Quando uma corrotina decide se suspender, o EventLoop coordena a próxima tarefa a executar
  17. 17. EventLoop Em python, o usuário define o início e o final do loop de tarefas assíncronas
  18. 18. asyncio Elegante É como se o código fosse linear
  19. 19. asyncio
  20. 20. mais? continuations futures and promises
  21. 21. Dúvidas?
  22. 22. Obrigado! <juliofreitas.net>

×