[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