SlideShare une entreprise Scribd logo
1  sur  23
Télécharger pour lire hors ligne
async & await
da teoria à prática
Julio Freitas
juliofreitas.net
@juliomfreitas
github.com/juliomfreitas
julio.martins.freitas@gmail.com
py3.5
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 tarefas normalmente é lenta
Programação
Concorrente
(threads)
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
Programação
Concorrente
(assíncrona)
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
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
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 suspender, o EventLoop
coordena a próxima tarefa a executar
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>

Contenu connexe

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

Programação Paralela - Threads
Programação Paralela - ThreadsProgramação Paralela - Threads
Programação Paralela - ThreadsGlaucio Scheibel
 
Sistemas Operacionais
Sistemas OperacionaisSistemas Operacionais
Sistemas OperacionaisAdir Kuhn
 
Principais conceitos técnicas e modelos de programação paralela
Principais conceitos técnicas e modelos de programação paralelaPrincipais conceitos técnicas e modelos de programação paralela
Principais conceitos técnicas e modelos de programação paralelaIntel Software Brasil
 
Threads - .Net Framework 4.0
Threads - .Net Framework 4.0Threads - .Net Framework 4.0
Threads - .Net Framework 4.0Charles Fortes
 
Programação Concorrente - Introdução
Programação Concorrente - IntroduçãoProgramação Concorrente - Introdução
Programação Concorrente - IntroduçãoFabio Moura Pereira
 
Arquitetura de Computadores - Lecom - UFMG
Arquitetura de Computadores - Lecom - UFMGArquitetura de Computadores - Lecom - UFMG
Arquitetura de Computadores - Lecom - UFMGdjonatascostsa
 
Multithreaded tecnologia
Multithreaded tecnologia Multithreaded tecnologia
Multithreaded tecnologia J Chaves Silva
 
Programação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e ConcorrênciaProgramação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e ConcorrênciaFabio Moura Pereira
 
Introdução a Lógica e Conceitos de Programação.ppt
Introdução a Lógica e Conceitos de Programação.pptIntrodução a Lógica e Conceitos de Programação.ppt
Introdução a Lógica e Conceitos de Programação.pptBrennoPimenta
 
Máquinas Multiníveis - Nível da Microarquitetura
Máquinas Multiníveis - Nível da MicroarquiteturaMáquinas Multiníveis - Nível da Microarquitetura
Máquinas Multiníveis - Nível da MicroarquiteturaLincoln Lamas
 
Mini-curso Programação Paralela e Distribuída
Mini-curso Programação Paralela e DistribuídaMini-curso Programação Paralela e Distribuída
Mini-curso Programação Paralela e DistribuídaDeivid Martins
 
Paralelização em Sistemas Computacionais por Bruno Domingues
Paralelização em Sistemas Computacionais por Bruno DominguesParalelização em Sistemas Computacionais por Bruno Domingues
Paralelização em Sistemas Computacionais por Bruno DominguesJoao Galdino Mello de Souza
 
Sistemas Distribuídos - Computação Paralela
Sistemas Distribuídos - Computação ParalelaSistemas Distribuídos - Computação Paralela
Sistemas Distribuídos - Computação ParalelaAdriano Teixeira de Souza
 
Sistemas Distribuídos - Computação Paralela - Introdução
Sistemas Distribuídos - Computação Paralela - IntroduçãoSistemas Distribuídos - Computação Paralela - Introdução
Sistemas Distribuídos - Computação Paralela - IntroduçãoAdriano Teixeira de Souza
 

Similaire à Introdução a Programação Assíncrona Python 3.5 asyncio (20)

Programação Paralela - Threads
Programação Paralela - ThreadsProgramação Paralela - Threads
Programação Paralela - Threads
 
Sistemas Operacionais
Sistemas OperacionaisSistemas Operacionais
Sistemas Operacionais
 
Principais conceitos técnicas e modelos de programação paralela
Principais conceitos técnicas e modelos de programação paralelaPrincipais conceitos técnicas e modelos de programação paralela
Principais conceitos técnicas e modelos de programação paralela
 
Threads - .Net Framework 4.0
Threads - .Net Framework 4.0Threads - .Net Framework 4.0
Threads - .Net Framework 4.0
 
Threads
ThreadsThreads
Threads
 
Programação Concorrente - Introdução
Programação Concorrente - IntroduçãoProgramação Concorrente - Introdução
Programação Concorrente - Introdução
 
Arquitetura de Computadores - Lecom - UFMG
Arquitetura de Computadores - Lecom - UFMGArquitetura de Computadores - Lecom - UFMG
Arquitetura de Computadores - Lecom - UFMG
 
Multithreaded tecnologia
Multithreaded tecnologia Multithreaded tecnologia
Multithreaded tecnologia
 
Programação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e ConcorrênciaProgramação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e Concorrência
 
Processos e threads cap 02 (i unidade)
Processos e threads   cap 02 (i unidade)Processos e threads   cap 02 (i unidade)
Processos e threads cap 02 (i unidade)
 
Introdução a Lógica e Conceitos de Programação.ppt
Introdução a Lógica e Conceitos de Programação.pptIntrodução a Lógica e Conceitos de Programação.ppt
Introdução a Lógica e Conceitos de Programação.ppt
 
Resumo x86
Resumo x86Resumo x86
Resumo x86
 
Máquinas Multiníveis - Nível da Microarquitetura
Máquinas Multiníveis - Nível da MicroarquiteturaMáquinas Multiníveis - Nível da Microarquitetura
Máquinas Multiníveis - Nível da Microarquitetura
 
Mini-curso Programação Paralela e Distribuída
Mini-curso Programação Paralela e DistribuídaMini-curso Programação Paralela e Distribuída
Mini-curso Programação Paralela e Distribuída
 
Apostila SO
Apostila SOApostila SO
Apostila SO
 
Paralelização em Sistemas Computacionais por Bruno Domingues
Paralelização em Sistemas Computacionais por Bruno DominguesParalelização em Sistemas Computacionais por Bruno Domingues
Paralelização em Sistemas Computacionais por Bruno Domingues
 
Sistemas Distribuídos - Computação Paralela
Sistemas Distribuídos - Computação ParalelaSistemas Distribuídos - Computação Paralela
Sistemas Distribuídos - Computação Paralela
 
Sistemas Distribuídos - Computação Paralela - Introdução
Sistemas Distribuídos - Computação Paralela - IntroduçãoSistemas Distribuídos - Computação Paralela - Introdução
Sistemas Distribuídos - Computação Paralela - Introdução
 
intro.pdf
intro.pdfintro.pdf
intro.pdf
 
Aula01 so
Aula01 soAula01 so
Aula01 so
 

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