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

De Garoa Hacker Clube
Ir para navegação Ir para pesquisar
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?
: As bibliotecas básicas '''threading''' e '''multiprocessing''' são praticamente iguais de Python 2.7 a Python 3.4. As bibliotecas '''concurrent.futures''' e '''asyncio''' foram criadas para Python 3, mas existem backports no PyPI: [https://pypi.python.org/pypi/futures futures] e [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 (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]).
   
   

Edição das 17h16min de 16 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
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.3 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 (mas existe um backport para 2.7: futures e asyncio funciona só com Python 3.3 (backport para 2.7, com diferenças importantes: trollius).