Mudanças entre as edições de "Oficina de Concorrência em Python"
(13 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
− | [[Arquivo:Muitos-pratos-girando.jpg|thumb| |
+ | [[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 == |
||
− | Aprender a usar objetos '''Future''' da biblioteca padrão do Python ≥ 3. |
+ | 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, 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. |
||
− | ;Pré-requisitos: Saber programar em Python; se quiser praticar na hora, trazer Python 3. |
+ | ;Pré-requisitos: Saber programar em Python; se quiser praticar na hora, trazer Python 3.4 instalado. |
;Professor: [[Usuário:LucianoRamalho|Luciano Ramalho]] |
;Professor: [[Usuário:LucianoRamalho|Luciano Ramalho]] |
||
== Descrição == |
== Descrição == |
||
− | A partir do Python 3. |
+ | 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 22: | Linha 22: | ||
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. |
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: [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]). |
||
+ | |||
[[Categoria:Eventos]][[Categoria:Concorrência]][[Categoria:Python]] |
[[Categoria:Eventos]][[Categoria:Concorrência]][[Categoria:Python]] |
Edição atual tal como às 15h29min de 28 de janeiro de 2015
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:301º 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).