[pyar] leyendo archivo en paralelo

Facundo Batista facundobatista en gmail.com
Lun Ago 11 08:44:33 ART 2014


2014-08-08 18:28 GMT-03:00 Sebastian Bassi <sebastian.bassi en globant.com>:

> 2014-08-08 11:17 GMT-03:00 Facundo Batista <facundobatista en gmail.com>:
>> Cuando Python llega al final del archivo, y leés la linea, te devuelve
>> una cadena vacía. En ese momento, en vez de "cortar", tenés que
>> esperar un rato, y seguir leyendo (sigue de donde estaba!).
>
> Si, suena bien. Voy a pensar sobre como seguir desde donde estaba
> porque cuando llamas __next__ no hay vuelta atras, pero me fijo.

Ojo, si aplicás también el (buen) consejo que dió Javier Pepe de usar
Queues para mandar las lineas del generador a los workers, no tenés un
__next__, y queda todo mucho más elegante.


>> Yo cambiaría un detalle en tu diseño. Creo que es más controlable si
>> tenés un sólo consumidor del archivo, con los N workers, quedaría algo
>> como...
> ....
>>       if line:
>>           worker = select_idle_worker()
>
> La idea es leer los output de los worker de manera consecutiva porque
> en el archivo de salida quiero mantener el orden, aun suponiendo que
> se tarde distinto en cada linea, no quiero que el que termine primero
> sea logueado antes, sino respetando el orden del archivo original.

Teniendo trabajadores en paralelo yo no confiaría en que "quede en el
orden original porque anduvo todo bien, sino que usaría un índice).

O sea, en vez de tener "linea" como payload, tendría (nrodelinea,
linea). Después en el output de los trabajadores te asegurás que ese
nrodelinea te quede consecutivo.

Slds.

-- 
.    Facundo

Blog: http://www.taniquetil.com.ar/plog/
PyAr: http://www.python.org/ar/
Twitter: @facundobatista


More information about the pyar mailing list