[pyar] leyendo archivo en paralelo

Facundo Batista facundobatista en gmail.com
Vie Ago 8 11:17:12 ART 2014


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

> Esto funciona, sobre todo si el archivo que crece termina de crecer
> antes que el ultimo worker llegue al final. Ahora, si los workers
> llegan al final del archivo, pero este luego vuelve a crecer, los
> workers no se dan cuenta y terminan, no "espera" a que haya mas
> lineas.
>
> Cualquier sugerencia de como mejorar esto será bienvenida, aca pego el
> código del programa 3 que es el mas relevante:

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!).

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...

  fh = open("bigfile.txt", "rt)
  while True:
      line = fh.readline()
      if line:
          worker = select_idle_worker()
          worker.put(line)
      else:
          time.sleep(1)

Slds.

-- 
.    Facundo

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


More information about the pyar mailing list