Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento!
[As partes desta mensagem que não continham texto foram removidas]
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia: |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar |
| E se você é usuário do BOL lembre-se de cadastrar o |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´
Links do Yahoo! Grupos
<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/python-brasil/
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@yahoogrupos.com.br
<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html
Tenta ler toda a Doc em http://docs.python.org/lib/module-threading.html
Nunca usei o modulo Thread, que eh mais baixo nivel.
No caso do problema classico do Prod/Cons acredito que a solucao seja
feita com um Semaforo para controlar o Produtor e outro para Controlar
o Consumidor. Mas sei la, nem lembro mais desses exercicios, na minha
epoca foi tudo em C ou Java.
>
>
>
> On 10/7/07, Lucas Simão <luks...@yahoo.com.br> wrote:
> >
> >
> >
> >
> >
> >
> > Olá meus caros,
> > na minha universidade estamos realizando trabalhos sobre problemas relacionados à agendamento de processos e multiprocessamento na nossa turma de Sist. Operacionais, foi passado um trabalho sobre tala assunto e a solução poderia ser efetuada em qulquer linguagem, eu escolhi python mais quando me deparei com a os semaforos e locks acabei não conseguindo utilizar o que ja estava pronto pela biblioteca default do python, o resultado é que tive que implementar um semaforo no braçosegundo intruções do livro do Tanebawn, mesclando eventos tanto p/ consumidores quando para produtores. Hoje me lembrei de um paper que eu li do guido que falava justamente sobre isso, que no mailbox dele mais da metade de reports de erros da linguagem estava relacionado ao sincronismo e que ele analisava e concluía que o erro ñ estava na linguagem e sim no modo de utilizar as ferramentas de sincronismo. Minha pergunta é, qual é então a maneira correta de sincronizar thread produtoras e
> > consumidoras em python? Funciona mesmo?
> >
> > Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento!
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
>
--
Atenciosamente
David Kwast
da...@imptec.com.br
david...@gmail.com
david...@uol.com.br
skype: david.kwast
msn: david...@ig.com.br
O jeito mais fácil? usando o módulo Queue, mas é tão fácil de
sincronizar que não sei se não vai acabar irritando o teu professor.
--
Leonardo Santagada
A: Because it breaks the logical sequence of the discussion.
Q: Why is top-posting such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?
Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento!
[As partes desta mensagem que não continham texto foram removidas]
,-----------------------------------------------------------.
import threading
class MailBox:
def __init__(self):
self.mensagem = ''
self.leituraLiberada = False
self.threadCondition = threading.Condition()
def escreveMensagem(self,msg):
self.threadCondition.acquire()
while (self.leituraLiberada):
try:
self.threadCondition.wait()
except Exception, e:
return e
self.mensagem = msg
self.leituraLiberada = True
self.threadCondition.notify()
self.threadCondition.release()
def consomeMensagem(self):
self.threadCondition.acquire()
while not(self.leituraLiberada):
try:
self.threadCondition.wait()
except Exception, e:
return e
self.leituraLiberada = False
self.threadCondition.notify()
self.threadCondition.release()
return self.mensagem
class Consumidor (threading.Thread):
def __init__(self,mb):
threading.Thread.__init__(self)
self.mailBox = mb
def run(self):
print self.mailBox.consomeMensagem()
class Produtor (threading.Thread):
def __init__(self,mb):
threading.Thread.__init__(self)
self.mailBox = mb
def run(self):
self.mailBox.escreveMensagem("Ola thread")
mb = MailBox()
prod = Produtor(mb)
cons = Consumidor(mb)
cons.start()
prod.start()
prod.join()