[Python] problema con socket (lettura blocking)
Manlio Perillo
manlio.perillo a gmail.com
Ven 4 Ott 2013 19:51:33 CEST
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On 04/10/2013 18:09, Vittorio Spina wrote:
>
>> 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.
No, credo di aver capito, a parte alcuni dettagli.
> 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
Quanti sono questi punti, come ordine di grandezza?
> 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'│.
Ritardo di 5 secondi rispetto a cosa e misurati come?
> 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.
Che intendi con accumulare ritardo?
O meglio, come te ne accorgi?
Potrei capire se i dati letti sono dei frame video che devono essere
riprodotti sincronizzati, ma non mi sembra il tuo caso.
> 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?
No, che io sappia.
In generale ti direi di riscrivere il programma in modo che sia piu'
efficiente.
> una maniera Non blocking? il protocollo non c'entra nulla. ciao
>
Ciao Manlio
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)
Comment: Using GnuPG with Icedove - http://www.enigmail.net/
iEYEARECAAYFAlJPACQACgkQscQJ24LbaUQ9xQCdHTSTGlYLTXRfhuKw7q8sjHkh
IBwAniLz9qUHutSlYXV/0fspUJBTR9C/
=qZFs
-----END PGP SIGNATURE-----
Maggiori informazioni sulla lista
Python