[Python] Utilizzo di Readline con socket

De Santis Luca farolfo a hotmail.com
Ven 1 Feb 2008 10:43:19 CET


> From: piro a develer.com> > I thread sono brutti, cattivi, cacca, hitler usava i thread... sono d'accordo > su tutto. Ma ci sono momenti in cui fanno maledettamente comodo (questo lo è, > a meno che non ti spieghino come installare twisted sul cellulare) e ci sono > modi di usarli in cui funzionano senza dare rogne (una coda lo è). Secondo me > rimuoverli dalla coscienza collettiva della programmazione è negativo quanto > il loro stesso abuso.> 
Scusate fa faccio tante domande, forse pure stupide, non é tanto che sono entrato nel modo di python :)
 
Ma non capisco bene come vanno gestiti i thread. Ho letto che praticamente posso crearli semplicemente con la funzione
 
thread.start_new_thread(Funzione(Argomenti), ())
 
Però chi gestisce il cambio di contesto dei thread ? Devo farelo io o lo fa direttamente python ?
 
Io ho ad esempio chiamo questi deu thread:
 
thread.start_new_thread(Listen(PhoneConnection), ())
thread.start_new_thread(receive_msg(fd), ())
 
Le funzioni richiamate sono quele sott:
 
(1)
def Listen(PhoneConnection):    LastClock=clock()    try:     if PhoneConnection:         LogScreen("- Init listen port sevice")            while True:                GetClock=clock()                if GetClock-LastClock>2:                    TmpInfo=GetPhoneInfo()                        if TmpInfo==1:                            ToSend="StatChn:"+str(LastSignal)+";"+str(LastBattery)+";"+str(LastOperator)                            talk(PhoneConnection,ToSend)    except:        PhoneConnection.close()        LogScreen("- Connection Lost in Listen")        InitConnection()
(2)
def receive_msg(fd):    reply = fd.readline()    ParseIncomingData(reply)
 
 
Locicamente viene sempre eseguito solo il primo thread in quanto il ciclo while fa si che la funzione sta in un loop infinito finché non disconnetto il telefono. Stessa cosa accade se lancio prima la funzione receive_msg(fd) in quanto fd.readline() tiene bloccato il thread finché non trova qualche dato in arrivo. 
 
Quindi come faccio a fare un cambio di contestop tra il primo ed il secondo thread ?
_________________________________________________________________
Scarica GRATIS le tue emoticon preferite!
http://intrattenimento.it.msn.com/emoticon/
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: http://lists.python.it/pipermail/python/attachments/20080201/a1aa2672/attachment.htm 


More information about the Python mailing list