[Python-es] ¿queue.put bloquea?

Ricardo Azpeitia Pimentel razpeitia en gmail.com
Vie Ene 17 19:15:55 CET 2014


En la documentación viene explicado:
http://docs.python.org/2/library/queue.html

queue.put se bloquea cuando el queue alcanza el numero máximo de slots
disponibles. También existe queue.put_nowait que no se bloquea pero lanzara
una excepción si el queue supera el limite.

No creo que una cola sea un problema, si quieres acelerar lo que sea que
estés haciendo te recomiendo primero hacer profiling, ver cual o cuales son
tus cuellos de botella y mejorar esos puntos.


El 17 de enero de 2014, 6:40, Daπid <davidmenhur en gmail.com> escribió:

> Hola:
>
> Tengo una aplicación que genera datos en un pool de ocho trabajadores
> (joblib.Parallel) que son almacenados en una base de datos (Pytables) por
> un proceso paralelo (multiprocessing.Process). Los datos son transferidos a
> través de una cola.
>
> Ahora bien: el bucle que genera los datos es muy rápido, hay datos nuevos
> cada milésima de segundo. Mi pregunta es, cuando intento escribir en la
> cola, ¿se produce un bloqueo? ¿El resto de trabajadores tiene que esperar
> para escribir sus resultados? Al haber tantos procesos leyendo y
> escribiendo en la cola con tanta frecuencia, puede ser un factor importante.
>
> El objeto que pongo en la cola es:
>
> [(etiqueta1, etiqueta2), [tiempo_a, valor1_a, valor2_a, valor3_a, (i1_a,
> i2_a)], [tiempo_b, valor1_b, valor2_b, valor3_b, (i1_b, i2_b)] ...]
>
> donde el número de listas es variable (~10) y el proceso que guarda
> desempaqueta los valores para guardarlos en la tabla
>
> etiqueta1, etiqueta2, tiempo_a, valor1_a, valor2_a, valor3_a, i1_a, i2_a
> etiqueta1, etiqueta2, tiempo_b, valor1_b, valor2_b, valor3_b, i1_b, i2_b
> ...
>
> ¿Hay alguna forma más eficiente de hacer esta transferencia? Las etiquetas
> serán guardadas como enteros sin sign de 32 bits, valores y tiempo floats
> de 32 bits e i1 e i2, float64.
>
>
> /David.
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20140117/3f72a80c/attachment.html>


Más información sobre la lista de distribución Python-es