[Python-es] ¿queue.put bloquea?

Daπid davidmenhur en gmail.com
Vie Ene 17 13:40:33 CET 2014


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.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20140117/01f35244/attachment.html>


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