[Python] problema con socket (lettura blocking)

Marco Buttu mbuttu a oa-cagliari.inaf.it
Sab 5 Ott 2013 08:08:23 CEST


On 10/04/2013 06:09 PM, Vittorio Spina wrote:
> Mi collego a un laser con interfaccia ethernet. Io faccio i seguenti passi
>
>  1. apro il socket
>  2. leggo un B alla volta con recv(1) finchè non trovo la magic word
>  3. trovata la magic word leggo un po di bytes con dentro le
>     informazioni fra cui, numero di scansione e numero di punti
>     scansionati
>  4. con un ciclo leggo tanti pacchetti successivi all'header quanti
>     sono i numeri scansionati
>  5. mostro i punti con pygame.
>
> c'è un ritardo di circa 5 secondi cosa che nel suo viewer non c'è.
> Leggendo i numeri di scansione mi accorgo che sono consequenziali 
> senza salti, il laser cioè mi aspetta e accumulo un ritardo per la 
> velocità del mio programma di visualizzazione.

Perche' non esegui il punto 5 in modo concorrente? Per me e' la' che 
accumuli la maggior parte del ritardo.

> se invece apro ogni volta che leggo il socket, va un po' a scatti 
> perchè l'apertura del socket è cosa pesante, ma funziona, scattando un 
> poco.

Questo non mi torna, perche' mi aspetto ugualmente un ritardo. Forse in 
questo caso il laser produce il punto, non puo' inviarlo perche' non hai 
completato le tue operazioni (non sei ancora tornato
al punto 1) e quindi il socket e' ancora chiuso, cosi' scarta il punto 
ma conserva il suo l'ID per assegnarlo al prossimo punto che produrra', 
che inviera' quando trovera' la connessione aperta (altrimenti lo 
scartera', e il ciclo continua).
Se il viewer vede solo i punti che il laser ha inviato correttamente al 
client, allora e' per questo che vi sembra che funzioni, perche' non vi 
accorgete dei ritardi ma in realta' state perdendo dei punti.

In definitiva, il mio consiglio e' `paralellizzare` il punto 5, e se non 
bastasse anche intervenire sul protocollo

-- 
Marco Buttu

INAF - Osservatorio Astronomico di Cagliari
Via della Scienza, Loc. Cuccuru Angius
09047 Selargius (CA)
Email: mbuttu a oa-cagliari.inaf.it

-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20131005/1bde015f/attachment.html>


Maggiori informazioni sulla lista Python