Oficina de Concorrência em Python

De Garoa Hacker Clube
Ir para: navegação, pesquisa
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).