Mudanças entre as edições de "Oficina de Concorrência em Python"

De Garoa Hacker Clube
Ir para navegação Ir para pesquisar
 
(6 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
[[Arquivo:Muitos-pratos-girando.jpg|thumb|300px|O malabarista é um só, mas trabalhando de modo concorrente ele mantém 18 pratos girando ao mesmo tempo, dedicando um pouco de tempo a cada prato.]]
+
[[Arquivo:Muitos-pratos-girando.jpg|thumb|320px|O malabarista é um só, mas trabalhando de modo concorrente ele mantém 18 pratos girando ao mesmo tempo, dedicando um pouco de tempo a cada prato.]]
   
 
== Objetivo ==
 
== Objetivo ==
Linha 7: Linha 7:
 
== Quando, onde, como, quem ==
 
== Quando, onde, como, quem ==
   
;Quando: 2-feira, 19/jan/2015, 19:30
+
;Quando: 3º encontro: 2ª-feira, 2/fev/2015, 19:30<br><strike>2º encontro: 2ª-feira, 26/jan/2015, 19:30</strike><br><strike>1º encontro: 2ª-feira, 19/jan/2015, 19:30</strike>
 
;Onde: [[Como chegar|Sede do Garoa Hacker Clube]]
 
;Onde: [[Como chegar|Sede do Garoa Hacker Clube]]
 
;Inscrições: Não é preciso se inscrever, basta aparecer. Esta é mais uma atividade aberta e gratuita do Garoa Hacker Clube.
 
;Inscrições: Não é preciso se inscrever, basta aparecer. Esta é mais uma atividade aberta e gratuita do Garoa Hacker Clube.
Linha 15: Linha 15:
 
== Descrição ==
 
== Descrição ==
   
A partir do Python 3.3 o pacote [https://docs.python.org/3/library/concurrent.futures.html concurrent.futures] oferece a classe '''Future''', que representa uma computação pendente, facilitando o tratamento das respostas e condições de erro. A ''future'' the Python é semelhante aos conceitos de ''deferreds'' e ''promises'' encontrados em frameworks orientados a evento em Python, JavaScript e Ruby.
+
A partir do Python 3.2 o pacote [https://docs.python.org/3/library/concurrent.futures.html concurrent.futures] oferece a classe '''Future''', que representa uma computação pendente, facilitando o tratamento das respostas e condições de erro. A ''future'' the Python é semelhante aos conceitos de ''deferreds'' e ''promises'' encontrados em frameworks orientados a evento em Python, JavaScript e Ruby.
   
 
O mesmo módulo '''concurrent.futures''' oferece as classes '''ThreadPoolExecutor''' e '''ProcessPoolExecutor''' que recebem ''futures'' e gerenciam sua execução assíncrona usando um conjunto de threads ou processos, respectivamente. No caso de '''ProcessPoolExecutor''', a execução pode se dar em paralelo em um computador com vários núcleos.
 
O mesmo módulo '''concurrent.futures''' oferece as classes '''ThreadPoolExecutor''' e '''ProcessPoolExecutor''' que recebem ''futures'' e gerenciam sua execução assíncrona usando um conjunto de threads ou processos, respectivamente. No caso de '''ProcessPoolExecutor''', a execução pode se dar em paralelo em um computador com vários núcleos.
Linha 32: Linha 32:
   
 
; O conteúdo se aplica a Python 2.7 também?
 
; O conteúdo se aplica a Python 2.7 também?
: Os exemplos serão desenvolvidos e testados no Python 3.4, porém as bibliotecas básicas '''threading''' e '''multiprocessing''' são praticamente iguais de Python 2.7 a Python 3.4. A biblioteca '''concurrent.futures''' foi introduzida no Python 3.2 (mas existe um backport para 2.7: [https://pypi.python.org/pypi/futures futures] e '''asyncio''' funciona só com Python 3.3 (backport para 2.7, com diferenças importantes: [https://pypi.python.org/pypi/trollius trollius]).
+
: Os exemplos serão desenvolvidos e testados no Python 3.4, porém as bibliotecas básicas '''threading''' e '''multiprocessing''' são praticamente iguais de Python 2.7 a Python 3.4. A biblioteca '''concurrent.futures''' foi introduzida no Python 3.2 (backport para 2.7: [https://pypi.python.org/pypi/futures futures]) e '''asyncio''' funciona só com Python 3.3 (backport para 2.7, com diferenças importantes: [https://pypi.python.org/pypi/trollius trollius]).
   
   

Edição atual tal como às 15h29min de 28 de janeiro de 2015

O malabarista é um só, mas trabalhando de modo concorrente ele mantém 18 pratos girando ao mesmo tempo, dedicando um pouco de tempo a cada prato.

Objetivo

Aprender a usar objetos Future da biblioteca padrão do Python ≥ 3.2 para lidar com threads, multiprocessos e programação orientada a eventos.

Quando, onde, como, quem

Quando
3º encontro: 2ª-feira, 2/fev/2015, 19:30
2º encontro: 2ª-feira, 26/jan/2015, 19:30
1º encontro: 2ª-feira, 19/jan/2015, 19:30
Onde
Sede do Garoa Hacker Clube
Inscrições
Não é preciso se inscrever, basta aparecer. Esta é mais uma atividade aberta e gratuita do Garoa Hacker Clube.
Pré-requisitos
Saber programar em Python; se quiser praticar na hora, trazer Python 3.4 instalado.
Professor
Luciano Ramalho

Descrição

A partir do Python 3.2 o pacote concurrent.futures oferece a classe Future, que representa uma computação pendente, facilitando o tratamento das respostas e condições de erro. A future the Python é semelhante aos conceitos de deferreds e promises encontrados em frameworks orientados a evento em Python, JavaScript e Ruby.

O mesmo módulo concurrent.futures oferece as classes ThreadPoolExecutor e ProcessPoolExecutor que recebem futures e gerenciam sua execução assíncrona usando um conjunto de threads ou processos, respectivamente. No caso de ProcessPoolExecutor, a execução pode se dar em paralelo em um computador com vários núcleos.

No Python 3.4, a biblioteca asyncio traz sua própria asyncio.Future, parecida mas não idêntica a concurrent.futures.Future.

Nesta oficina vamos investigar o que são futures, e como usá-las para fazer operações intensivas em I/O, como Web scraping. Em uma futura oficina trataremos de operações intensivas em CPU, como indexação de textos.

Repostas para perguntas prováveis

Posso participar sem saber Python?
Se você já sabe programação concorrente em outra linguagem de programação, está apto a acompanhar as explicações e sua perspectiva de outra linguagem será muito bem vinda.
O mini-curso será gravado ou transmitido ao vivo?
Não.
O conteúdo se aplica a Python 2.7 também?
Os exemplos serão desenvolvidos e testados no Python 3.4, porém as bibliotecas básicas threading e multiprocessing são praticamente iguais de Python 2.7 a Python 3.4. A biblioteca concurrent.futures foi introduzida no Python 3.2 (backport para 2.7: futures) e asyncio funciona só com Python ≥ 3.3 (backport para 2.7, com diferenças importantes: trollius).