[Python] problema con socket (lettura blocking)
Vittorio Spina
vittorio.spina a gmail.com
Ven 4 Ott 2013 18:09:24 CEST
> Ok, finalmente ho capito cosa intendi.
>
> Il problema e' che sei troppo lento a leggere, e non ci puoi fare
> niente a parte ottimizzare il programma o riscriverlo in C.
>
> Infatti lo strumento non sembra avere supporto per il controllo del
> flusso [1] e quindi ti continua a mandare dati, anche se tu non sei in
> grado di "tenere il passo".
>
>
> [1] http://en.wikipedia.org/wiki/Flow_control_(data)
>
no, mi devi scusare, ma evidentemente mi sono spiegato male.
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.
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.
C'è che tu sappia un modo per dire al socket che il device server non
deve aspettare? una maniera Non blocking?
il protocollo non c'entra nulla.
ciao
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20131004/1023d197/attachment.html>
Maggiori informazioni sulla lista
Python