SlideShare uma empresa Scribd logo
t u d o a o m e s m o t e m p o a g o r a
PYTHON ASSÍNCRONO
Programação concorrente sem tocar em threads ou callbacks
2
Sometimes you need a blank template.
FLUENT PYTHON, MEU PRIMEIRO LIVRO
Fluent Python (O’Reilly, 2015)
Python Fluente (Novatec, 2015)
Python к вершинам

мастерства* (DMK, 2015)
流暢的 Python†
(Gotop, 2016)
also in Polish, Korean…
3
* Python. To the heights of excellence

† Smooth Python
CONCORRÊNCIA
Não é o mesmo que paralelismo!
4
CONCORRÊNCIA X PARALELISMO
5
Rob Pike - 'Concurrency Is Not Parallelism'
https://www.youtube.com/watch?v=cN_DpYBzKso
GIRANDO 18 PRATOS COM APENAS 2 MÃOS
6
gIraNdo Pr

atos conco
rrência Mo
derNa eM
PythON
https://speakerdeck.com/ramalho/await-em-python-3-dot-5
FUNDAMENTOS PARA A CONCORRÊNCIA
• Interrupções de hardware
• Callbacks
• Threads (kernel, userland, green threads)
• Geradores
• Corrotinas
7
DESFIANDO THREADS
• Seven Concurrency Models in
Seven Weeks — When Threads
Unravel (Paul Butcher)
• Abstrações mais poderosas
• Actors, CSP, STM
• Data parallelism
• OpenCL (GPU)
• Lambda Architecture)
• Suporte nativo em linguagens
• Erlang e Elixir
• Clojure
• Go
• Cilk
8
CONCORRÊNCIA
APESAR DA GIL
Sim, mesmo com a querida Global Interpreter Lock
9
ALTERNATIVAS EM PYTHON
• Threads: OK para I/O de alto desempenho em escala
limitada
• Ver: Motor 0.7 Beta With Pymongo 2.9 And A Threaded Core

— A. Jesse Jiryu Davis — https://emptysqua.re/blog/motor-0-7-beta/
• Certas bibliotecas externas em Cython, C, C++, FORTRAN…
• Multiprocessing: múltiplas instâncias de Python
• Callbacks e deferreds em Twisted
• gevent: greenlets e monkey-patching
• Corrotinas em Tornado e Asyncio
10
ASYNCIO
O principal foco de desenvolvimento concorrente em Python hoje
11
ASYNCIO
• Biblioteca criada por Guido van Rossum (originalmente: Tulip)
• incorporada à biblioteca padrão no Python 3.4 como asyncio
• asyncio tem caráter provisional no Python 3.5
• API ainda instável
• status no Python 3.6…
• Eco-sistema muito ativo
• por exemplo: https://github.com/aio-libs/
12
13
14
15
16
17
18
LOOP DE EVENTOS PLUGÁVEL
• asyncio inclui um loop de eventos próprio
• API AbstractEventLoopPolicy permite substituir esse loop
de eventos por outro que implemente AbstractEventLoop
• AsyncIOMainLoop implementado pelo projeto Tornado
• Loop de eventos de toolkits para GUI: Quamash (PyQt4, PyQt5, PySide)
• Loops de eventos baseados na biblioteca libuv, base do Node.js
19
UVLOOP
• Implementada com bindings em Cython sobre libuv
• libuv é a biblioteca de I/O orientada a eventos do Node.js, usada também como
biblioteca externa em outras linguagens: C++, Lua, Julia, Python, Java, Go, PHP, C# etc.
• Criada por Yuri Selivanov, que criou a sintaxe async/await
• PEP 492 — Coroutines with async and await syntax
20
DESEMPENHO DO UVLOOP
Fonte: uvloop: Blazing fast Python networking — Yury Selivanov — 2016-05-03
https://magic.io/blog/uvloop-make-python-networking-great-again/ 21
CORROTINAS
NATIVAS
O principal foco de desenvolvimento concorrente em Python hoje
22
NOVA SINTAXE ASYNC DEF
• PEP 492: Novas palavras reservadas em Python 3.5
• async def para definir corrotinas nativas
• Novas instruções (somente em corrotinas nativas):
• await para delegar para objetos awaitable
• corrotinas nativas; geradores-corrotinas decoradas; implementam __await__
23
ANTES E DEPOIS
24
MAIS SUPORTE SINTÁTICO
• Ainda no PEP 492
• async for:

métodos especiais assíncronos __aiter__ e __anext__
• async with:

métodos especiais assíncronos __aenter__ e __aexit__
• Novidades do Python 3.6
• PEP 525: Asynchronous Generators
• PEP 530: Asynchronous Comprehensions (Python 3.6)
25
CONCLUSÃO
The End
26
MINHA OPINÃO
• Eco-sistema ainda jovem: bibliotecas em evolução
• alguns exemplos do Fluent Python agora geram avisos
• asyncio com sua política extensível é uma base sólida para
construir o futuro
• loops de eventos externos demonstra isso (ex. uvloop, pyuv)
• Vamos logo migrar para Python 3.5!
27
THE ONE (ABSTRACT) LOOP
28
¿PREGUNTAS?

Mais conteúdo relacionado

PDF
TDC2016 - Explorando Qt5 e Python em Linux Embarcado
PDF
TDC2016SP - Trilha Linux Embarcado
PDF
Canivete python
PPT
Por Que Python - #PUGCE
PDF
Apresentação Python Poli
PDF
Python Poli 2010
PDF
Hack Thursday - NodeJS
PDF
Desvendando o python
TDC2016 - Explorando Qt5 e Python em Linux Embarcado
TDC2016SP - Trilha Linux Embarcado
Canivete python
Por Que Python - #PUGCE
Apresentação Python Poli
Python Poli 2010
Hack Thursday - NodeJS
Desvendando o python

Mais procurados (20)

PPTX
PDF
Python, por onde começar - Semana Technológica UTFPR 2015.
PDF
Git ...ftw!
PPTX
Import python
ODP
Introdução ao Python
PDF
Workshop de introdução ao python - TADS 2015
PDF
Apresentacao sfd-poa
PPTX
Workshop Git e GitHub
PDF
Viagem pelas VMs do python
PDF
Python Módulo Básico - Introdução a linguagem Python
ODP
Slide PyQt versus Pyside
PPT
Python para programadores Ruby
PPTX
PDF
Globo.com - Porque amamos open-source?
PDF
Aula 6 - Curso Git e Github - Webschool
PDF
Git & Delphi
PDF
Iniciando com git
PDF
Aula 5 - Curso Git e Github - Webschool
PDF
Python b1tch
PPTX
Robocode - Aprendendo a guerrear com java !
Python, por onde começar - Semana Technológica UTFPR 2015.
Git ...ftw!
Import python
Introdução ao Python
Workshop de introdução ao python - TADS 2015
Apresentacao sfd-poa
Workshop Git e GitHub
Viagem pelas VMs do python
Python Módulo Básico - Introdução a linguagem Python
Slide PyQt versus Pyside
Python para programadores Ruby
Globo.com - Porque amamos open-source?
Aula 6 - Curso Git e Github - Webschool
Git & Delphi
Iniciando com git
Aula 5 - Curso Git e Github - Webschool
Python b1tch
Robocode - Aprendendo a guerrear com java !
Anúncio

Destaque (20)

PDF
TDC2016POA | Trilha DevOps - Monitoramento da infraestrutura para aplicac?o?e...
PDF
TDC2016POA | Trilha DevOps - DevOps Anti-Patterns
PDF
TDC2016POA | Trilha DevOps - Métricas, métricas para todos os lados!
PDF
TDC2016POA | Trilha DevOps - Monitoramento real-time com ELK
PPTX
TDC2016POA | Trilha Android - Monetização: conheça a rede de anúncios que pag...
PDF
TDC2016POA | Trilha Android - Firebase Cloud Messaging para Android e IoT
PPTX
TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já pa...
PPTX
TDC2016POA | Trilha Banco de Dados - TempDB, aprecie com moderação
PPTX
TDC2016POA | Trilha Banco de Dados - RavenDB: um banco de dados NoSQL de segu...
PDF
TDC2016POA | Trilha Pyhton - Python para Internet of Things
PPTX
TDC2016POA | Trilha Management - Ágil equilibrando o dia a dia de uma equipe
PPTX
TDC2016POA | Trilha Management - Lean Team Canvas para uma equipe de sucesso!
ODP
TDC2016POA | Trilha Python - Heimdall Guard - Spam Filter
PDF
TDC2016POA | Trilha Management - Como criar melhores times de desenvolvimento
PPTX
TDC2016POA | Trilha Management - Torne-se dispensável de suas funções.
PPTX
TDC2016POA | Trilha Management 3.0- Não quero virar gerente! Implementando a ...
PDF
TDC2016POA | Trilha Banco de Dados - Conheça o Debezium: uma plataforma distr...
PDF
TDC2016POA | Trilha Arquetetura - Revitalizando aplicações desktop usando Ce...
PDF
TDC2016POA | Trilha Arduino - A Prática do Arduino em Ensino: o Case de um La...
PDF
TDC2016POA | Trilha Dinamica - Facilitação - Que momento o grupo se encontra?
TDC2016POA | Trilha DevOps - Monitoramento da infraestrutura para aplicac?o?e...
TDC2016POA | Trilha DevOps - DevOps Anti-Patterns
TDC2016POA | Trilha DevOps - Métricas, métricas para todos os lados!
TDC2016POA | Trilha DevOps - Monitoramento real-time com ELK
TDC2016POA | Trilha Android - Monetização: conheça a rede de anúncios que pag...
TDC2016POA | Trilha Android - Firebase Cloud Messaging para Android e IoT
TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já pa...
TDC2016POA | Trilha Banco de Dados - TempDB, aprecie com moderação
TDC2016POA | Trilha Banco de Dados - RavenDB: um banco de dados NoSQL de segu...
TDC2016POA | Trilha Pyhton - Python para Internet of Things
TDC2016POA | Trilha Management - Ágil equilibrando o dia a dia de uma equipe
TDC2016POA | Trilha Management - Lean Team Canvas para uma equipe de sucesso!
TDC2016POA | Trilha Python - Heimdall Guard - Spam Filter
TDC2016POA | Trilha Management - Como criar melhores times de desenvolvimento
TDC2016POA | Trilha Management - Torne-se dispensável de suas funções.
TDC2016POA | Trilha Management 3.0- Não quero virar gerente! Implementando a ...
TDC2016POA | Trilha Banco de Dados - Conheça o Debezium: uma plataforma distr...
TDC2016POA | Trilha Arquetetura - Revitalizando aplicações desktop usando Ce...
TDC2016POA | Trilha Arduino - A Prática do Arduino em Ensino: o Case de um La...
TDC2016POA | Trilha Dinamica - Facilitação - Que momento o grupo se encontra?
Anúncio

Semelhante a TDC2016POA | Trilha Python - Python Assíncrono: tudo ao mesmo tempo agora (20)

PDF
Administração de sistemas usando Python
PDF
Poetry.pdf
PDF
BeavOps : Como o Python ajudou a integrar o mundo DevOps
PDF
Canivete suíço do Python
ODP
The zen of python 2010
PDF
Conhencendo Python e por que ela importa?
PDF
Django: desenvolvendo aplicações web de maneira simples e rápida!
PDF
Python - Programando em alto nível
PDF
Por que Python?
PDF
Comsolid2011 Introdução Python
PDF
Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE
PDF
O poder do Python/Django
PDF
Minicurso: Python e suas baterias incluídas
PPT
Apresentando a Linguagem de Programação Python
PDF
Python Mini Ccurso Consegi2011
PDF
Python Pythononcampus Uva 060609
PDF
Tutorial Django + Python
PDF
Por que python? fisl 14 - 2013
ODP
Slider biopython
PDF
Introdução à Linguagem de Programação Python.pdf
Administração de sistemas usando Python
Poetry.pdf
BeavOps : Como o Python ajudou a integrar o mundo DevOps
Canivete suíço do Python
The zen of python 2010
Conhencendo Python e por que ela importa?
Django: desenvolvendo aplicações web de maneira simples e rápida!
Python - Programando em alto nível
Por que Python?
Comsolid2011 Introdução Python
Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE
O poder do Python/Django
Minicurso: Python e suas baterias incluídas
Apresentando a Linguagem de Programação Python
Python Mini Ccurso Consegi2011
Python Pythononcampus Uva 060609
Tutorial Django + Python
Por que python? fisl 14 - 2013
Slider biopython
Introdução à Linguagem de Programação Python.pdf

Mais de tdc-globalcode (20)

PDF
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
PDF
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
PDF
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
PDF
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
PDF
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
PDF
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
PDF
TDC2019 Intel Software Day - Inferencia de IA em edge devices
PDF
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
PPT
Trilha .Net - Programacao funcional usando f#
PDF
TDC2018SP | Trilha Go - Case Easylocus
PDF
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
PDF
TDC2018SP | Trilha Go - Clean architecture em Golang
PDF
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
PDF
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
PDF
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
PDF
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
PDF
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
PDF
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
PDF
TDC2018SP | Trilha .Net - .NET funcional com F#
PDF
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - Inferencia de IA em edge devices
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha .Net - Programacao funcional usando f#
TDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core

Último (20)

PPTX
Aula 01 introdução a Psicologia Escolar.pptx
PPTX
1. A Cultura do Palco - muitos palcos, um espetáculo.pptx
PDF
EXPRESSÕES IDIOMÁTICAS - LÍNGUA PORTUGUESA
PPTX
Primeiros Socorros. Aula 1 VEROUVIRSENTIR.pptx
PPTX
SEGURANÇA, MEIO AMBIENTE E SAÚDE Aula 1.pptx
PPTX
INTRODUÇÃO AO ESTUDO DA ANATOMIA HUMANA [Salvo automaticamente].pptx
PDF
Uma Introdução às Ciências do Alcorão (Islam)
PDF
HABILIDADES POR BIMESTRES HABILIDADES POR BIMESTRES HABILIDADES POR BIMESTRES...
PDF
Pecados desdenhados por muita gente (islamismo)
PPSX
A epistemologia de Wilheim G Leibniz.ppsx
PPTX
Slides Lição 8, Betel, Jesus e a Mulher Adúltera, 3Tr25.pptx
PDF
Historia-da-Psicologia-Rumos-e-percursos.pdf
PDF
Historia da Gastronomia Mundial por Daianna Marques dos Santos
PPTX
QuestõesENEMVESTIBULARPARAESTUDOSEAPRENDIZADO.pptx
PDF
Atividades sobre o livro Letras de Carvão
PDF
edital-de-chamamento-publico-no-3-2025.pdf
PDF
HORÁRIO GERAL SIGAA 2025_PRÉVIA_SIGAA-1.pdf
PPTX
125511 - Aula 1 - América portuguesa antes da conquista patrimônio e preserva...
PPTX
5. A cultura do mundo virtual - globalidade.pptx
PPT
Caderno de Boas Práticas dos Professores Alfabetizadores.ppt
Aula 01 introdução a Psicologia Escolar.pptx
1. A Cultura do Palco - muitos palcos, um espetáculo.pptx
EXPRESSÕES IDIOMÁTICAS - LÍNGUA PORTUGUESA
Primeiros Socorros. Aula 1 VEROUVIRSENTIR.pptx
SEGURANÇA, MEIO AMBIENTE E SAÚDE Aula 1.pptx
INTRODUÇÃO AO ESTUDO DA ANATOMIA HUMANA [Salvo automaticamente].pptx
Uma Introdução às Ciências do Alcorão (Islam)
HABILIDADES POR BIMESTRES HABILIDADES POR BIMESTRES HABILIDADES POR BIMESTRES...
Pecados desdenhados por muita gente (islamismo)
A epistemologia de Wilheim G Leibniz.ppsx
Slides Lição 8, Betel, Jesus e a Mulher Adúltera, 3Tr25.pptx
Historia-da-Psicologia-Rumos-e-percursos.pdf
Historia da Gastronomia Mundial por Daianna Marques dos Santos
QuestõesENEMVESTIBULARPARAESTUDOSEAPRENDIZADO.pptx
Atividades sobre o livro Letras de Carvão
edital-de-chamamento-publico-no-3-2025.pdf
HORÁRIO GERAL SIGAA 2025_PRÉVIA_SIGAA-1.pdf
125511 - Aula 1 - América portuguesa antes da conquista patrimônio e preserva...
5. A cultura do mundo virtual - globalidade.pptx
Caderno de Boas Práticas dos Professores Alfabetizadores.ppt

TDC2016POA | Trilha Python - Python Assíncrono: tudo ao mesmo tempo agora

  • 1. t u d o a o m e s m o t e m p o a g o r a PYTHON ASSÍNCRONO Programação concorrente sem tocar em threads ou callbacks
  • 2. 2 Sometimes you need a blank template.
  • 3. FLUENT PYTHON, MEU PRIMEIRO LIVRO Fluent Python (O’Reilly, 2015) Python Fluente (Novatec, 2015) Python к вершинам
 мастерства* (DMK, 2015) 流暢的 Python† (Gotop, 2016) also in Polish, Korean… 3 * Python. To the heights of excellence
 † Smooth Python
  • 4. CONCORRÊNCIA Não é o mesmo que paralelismo! 4
  • 5. CONCORRÊNCIA X PARALELISMO 5 Rob Pike - 'Concurrency Is Not Parallelism' https://www.youtube.com/watch?v=cN_DpYBzKso
  • 6. GIRANDO 18 PRATOS COM APENAS 2 MÃOS 6 gIraNdo Pr
 atos conco rrência Mo derNa eM PythON https://speakerdeck.com/ramalho/await-em-python-3-dot-5
  • 7. FUNDAMENTOS PARA A CONCORRÊNCIA • Interrupções de hardware • Callbacks • Threads (kernel, userland, green threads) • Geradores • Corrotinas 7
  • 8. DESFIANDO THREADS • Seven Concurrency Models in Seven Weeks — When Threads Unravel (Paul Butcher) • Abstrações mais poderosas • Actors, CSP, STM • Data parallelism • OpenCL (GPU) • Lambda Architecture) • Suporte nativo em linguagens • Erlang e Elixir • Clojure • Go • Cilk 8
  • 9. CONCORRÊNCIA APESAR DA GIL Sim, mesmo com a querida Global Interpreter Lock 9
  • 10. ALTERNATIVAS EM PYTHON • Threads: OK para I/O de alto desempenho em escala limitada • Ver: Motor 0.7 Beta With Pymongo 2.9 And A Threaded Core
 — A. Jesse Jiryu Davis — https://emptysqua.re/blog/motor-0-7-beta/ • Certas bibliotecas externas em Cython, C, C++, FORTRAN… • Multiprocessing: múltiplas instâncias de Python • Callbacks e deferreds em Twisted • gevent: greenlets e monkey-patching • Corrotinas em Tornado e Asyncio 10
  • 11. ASYNCIO O principal foco de desenvolvimento concorrente em Python hoje 11
  • 12. ASYNCIO • Biblioteca criada por Guido van Rossum (originalmente: Tulip) • incorporada à biblioteca padrão no Python 3.4 como asyncio • asyncio tem caráter provisional no Python 3.5 • API ainda instável • status no Python 3.6… • Eco-sistema muito ativo • por exemplo: https://github.com/aio-libs/ 12
  • 13. 13
  • 14. 14
  • 15. 15
  • 16. 16
  • 17. 17
  • 18. 18
  • 19. LOOP DE EVENTOS PLUGÁVEL • asyncio inclui um loop de eventos próprio • API AbstractEventLoopPolicy permite substituir esse loop de eventos por outro que implemente AbstractEventLoop • AsyncIOMainLoop implementado pelo projeto Tornado • Loop de eventos de toolkits para GUI: Quamash (PyQt4, PyQt5, PySide) • Loops de eventos baseados na biblioteca libuv, base do Node.js 19
  • 20. UVLOOP • Implementada com bindings em Cython sobre libuv • libuv é a biblioteca de I/O orientada a eventos do Node.js, usada também como biblioteca externa em outras linguagens: C++, Lua, Julia, Python, Java, Go, PHP, C# etc. • Criada por Yuri Selivanov, que criou a sintaxe async/await • PEP 492 — Coroutines with async and await syntax 20
  • 21. DESEMPENHO DO UVLOOP Fonte: uvloop: Blazing fast Python networking — Yury Selivanov — 2016-05-03 https://magic.io/blog/uvloop-make-python-networking-great-again/ 21
  • 22. CORROTINAS NATIVAS O principal foco de desenvolvimento concorrente em Python hoje 22
  • 23. NOVA SINTAXE ASYNC DEF • PEP 492: Novas palavras reservadas em Python 3.5 • async def para definir corrotinas nativas • Novas instruções (somente em corrotinas nativas): • await para delegar para objetos awaitable • corrotinas nativas; geradores-corrotinas decoradas; implementam __await__ 23
  • 25. MAIS SUPORTE SINTÁTICO • Ainda no PEP 492 • async for:
 métodos especiais assíncronos __aiter__ e __anext__ • async with:
 métodos especiais assíncronos __aenter__ e __aexit__ • Novidades do Python 3.6 • PEP 525: Asynchronous Generators • PEP 530: Asynchronous Comprehensions (Python 3.6) 25
  • 27. MINHA OPINÃO • Eco-sistema ainda jovem: bibliotecas em evolução • alguns exemplos do Fluent Python agora geram avisos • asyncio com sua política extensível é uma base sólida para construir o futuro • loops de eventos externos demonstra isso (ex. uvloop, pyuv) • Vamos logo migrar para Python 3.5! 27