2014/1/18 Chema Cortes <[email protected]>

> Este relato es habitual en la programación concurrente.
>
> Queue se utiliza para "sincronismo" entre workers. El sincronismo
> requiere establecer bloqueos, que aumentan en número geométricamente
> al aumentar el número de workers, haciendo el programa mucho más lento.
>
> Si no necesitas "sincronismo", o sea, si no necesitas que los datos se
> encolen en el mismo orden que se generan (el orden lo podrías
> recomponer después usando las marcas temporales), usa mejor
> collections.deque cuyas operaciones son "atómicas" (no bloqueantes).
> Ojo con lo que puede llegar a crecer si no eres capaz de sacar datos
> al mismo ritmo que se meten.
>


El orden en el que se ejecuten es completamente irrelevante. deque parece
una opción muy buena, pero, desafortunadamente, no parece ser compatible
con multiprocessing.

Aquí está el esqueleto de mi programa:

https://gist.github.com/Dapid/8520567

Si uso deque, el proceso siempre ve la misma cola vacía. Si lo convierto en
un Thread, puede leer los datos del programa principal, pero no  los datos
generados desde un multiprocessing.pool.

¿Hay alguna otra alternativa?
_______________________________________________
Python-es mailing list
[email protected]
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a