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/
