material sobre threads em python

113 views
Skip to first unread message

Andre Bahia

unread,
Mar 8, 2013, 10:25:06 AM3/8/13
to python...@googlegroups.com
boa tarde, estou começando a programar threads em python mas estou com muitas dúvidas, diferença entre thread e threading, e como devenvolver aplicações nesse aspecto, alguém pode indicar um bom material de estudos? eu gostaria do básico, só para entender como python trabalha com essa ferramenta, nada muito aprofundado. Obrigado

--
André Miguel Pena Bahia

Bacharelando em Ciências da Computação pela UFPA
Bolsista do Grupo de Estudos em Redes de Computadores - GERCOM/UFPa

Pablo Carreira

unread,
Mar 8, 2013, 12:34:00 PM3/8/13
to python...@googlegroups.com
Oi André, o threading (o trabalho com threads) está sendo encapsulado por um conceito de mais alto nível que é o multiprocessing, disponível à partir da versão 2.6. O multiprocessing permite utilizar vários núcleos quando presentes.
Assim recomendaria começar os estudos por ele, é mais simples.

Para entender o básico, recomendaria o manual: http://docs.python.org/3.3/library/multiprocessing.html

Depois disto, existem algumas bibliotecas que permitem fazer coisas mais elaboradas com o multiprocessamento, (por exemplo, criar um gerenciador de tarefas) neste caso recomendaria verificar o Celery: http://celeryproject.org/

Para matar a curiosidade, voce pode multiprocessar qualquer "callable" (funções) com uma sintaxe semelhante ao map, vai um exemplo:

from multiprocessing import Pool

def uma_funcao(entrada):
    #fazer alguma coisa
    pass

itens = [1, 2, 3]
p = Pool(6) # 6 é o numero de processos paralelos
p.map(uma_funcao, itens)



Abs.

Leonardo Santagada

unread,
Mar 8, 2013, 12:37:11 PM3/8/13
to python...@googlegroups.com

2013/3/8 Andre Bahia <andreba...@gmail.com>

boa tarde, estou começando a programar threads em python mas estou com muitas dúvidas, diferença entre thread e threading, e como devenvolver aplicações nesse aspecto, alguém pode indicar um bom material de estudos? eu gostaria do básico, só para entender como python trabalha com essa ferramenta, nada muito aprofundado. Obrigado

thread é o jeito mais básico de mexer com threads no python e Threading é um modulo que faz uma camada de objetos por cima das ferramentas do modulo thread. Pra quem esta começando a documentação do Threading é um bom começo e tem um python threading howto linkado na documentação oficial que é bem bom.

--

Leonardo Santagada

Leonardo Santagada

unread,
Mar 8, 2013, 12:42:39 PM3/8/13
to python...@googlegroups.com

2013/3/8 Pablo Carreira <pablotc...@gmail.com>

Oi André, o threading (o trabalho com threads) está sendo encapsulado por um conceito de mais alto nível que é o multiprocessing, disponível à partir da versão 2.6. O multiprocessing permite utilizar vários núcleos quando presentes.

multiprocessing = multiprocesso != threads, fora a api parecida ele não é a mesma coisa que threads.


--

Leonardo Santagada

Pablo Carreira

unread,
Mar 8, 2013, 12:52:27 PM3/8/13
to python...@googlegroups.com

multiprocessing = multiprocesso != threads, fora a api parecida ele não é a mesma coisa que threads.

Sem dúvidas Leonardo.

Aqui vai um link explicando as diferenças, inclusive pros e contras:

Pablo Carreira

unread,
Mar 8, 2013, 1:03:23 PM3/8/13
to python...@googlegroups.com
Complementando, segue o PEP 371, que justifica a implementação do multiprocessing:

Leonardo Santagada

unread,
Mar 8, 2013, 2:41:13 PM3/8/13
to python...@googlegroups.com
Valeu mesmo, eu tava sem tempo de explicar as diferenças para o andré, mas acho que esses docs que tu passou vai ajudar ele a se decidir. O unico caso onde eu usaria threads ao inves de multiprocessing é quando ou as threads ficam paradas fazendo IO ou ficam paradas esperando por uma chamada a um modulo feito em C (lxml por exemplo). Para todas as outras multiprocessing é melhor.


2013/3/8 Pablo Carreira <pablotc...@gmail.com>

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
 
---
Você está recebendo esta mensagem porque se inscreveu no grupo "python-brasil" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para python-brasi...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 



--

Leonardo Santagada

Andre Bahia

unread,
Mar 8, 2013, 9:07:02 PM3/8/13
to python...@googlegroups.com
obrigado pela orientação de todos, vou começar meus estudos! =)

Joao Paulo Junior

unread,
Dec 10, 2013, 1:12:10 PM12/10/13
to python...@googlegroups.com
Obrigado pessoal, o topico é um pouco antigo mas mesmo assim foi de grande ajuda com um problema que estava (bom, nesse exato momento ainda estou) tendo.


Em sexta-feira, 8 de março de 2013 12h25min06s UTC-3, Andre Bahia escreveu:
Reply all
Reply to author
Forward
0 new messages