[pyar] Colas e Hilos.

Ricardo Daniel Quiroga l2radamanthys en gmail.com
Mie Ago 26 21:21:13 ART 2015


hola
mmm podrias implementar productor consumidor, o simplemente usar semaforos
si solo quieres bloquear el acceso a la cola

saludos

El 26 de agosto de 2015, 20:28, Ignacio Rossi <rossi.ignacio en gmail.com>
escribió:

> Opa, detalle menor, pero no por eso menos importante,
>
> Queue requiere que le llames a task_done despues de que terminaste de
> procesar el elemento, Ante cualquier duda consulte a su documentación de
> cabecera. [0]
>
> Saludos
>
> Nacho
>
> [0] https://docs.python.org/3/library/queue.html#queue.Queue.task_done
>
>
> El 26 de agosto de 2015, 20:19, Ignacio Rossi <rossi.ignacio en gmail.com>
> escribió:
>
>> Hola
>>
>> > Tengo una aplicacion que toma de una cola una cantidad de elementos.
>> Esa cola la estoy manejando con una lista.
>>
>> ¿Una list común? Si es así y la estás usando sin locks, seguro corrés
>> peligro de que los multiples threads se pisen entré si. Para evitar eso sin
>> tener que meterse con locks, tenés la clase Queue [0].
>>
>> Por otro lado, aunque uses Queue, si removés elementos con varios
>> threads, la lista puede cambiar entre el chequeo y los pops.
>>
>> ¿La cantidad de elementos tiene que ser fija? Si solo querés limitar la
>> cantidad de elementos que mandás por el socket en cada pasada, podés
>> escribir algo así:
>>
>> enviados = 0
>> while enviados < 4:
>>     try:
>>         socket.send(cola.get())  # OJO: Estoy usando Queue acá
>>     except Queue.Empty:
>>         break
>>     else:
>>         enviados += 1
>>
>> Eso (creo, no lo probé :) ) se asegura de enviar a lo sumo 4 elementos,
>> tal vez son menos. El try/except te soluciona lo de usar el if y que entre
>> el if y los gets otro thread te "robe" elementos.
>>
>> > los hilos trabajan de uno a uno en python segun comprendo
>>
>> No estoy seguro de a que te referís con esto. ¿Estás hablando del Global
>> Interpreter Lock (GIL) ?
>>
>> Espero haberte sacado alguna duda.
>>
>> Saludos
>>
>> Nacho
>>
>>
>> [0] https://docs.python.org/3/library/queue.html#module-Queue
>>
>>
>> El 26 de agosto de 2015, 19:48, Enrique Alejandro Villafañe <
>> villafane.enrique en gmail.com> escribió:
>>
>>> Buen dia, tengo un problema grande que he intentado resolver, no lo
>>> consigo y estoy seguro que sabran la solucion.
>>>
>>> Tengo una aplicacion que toma de una cola una cantidad de elementos. Esa
>>> cola la estoy manejando con una lista. Hasta ahi todo bien.
>>>
>>> Pero esa aplicacion envia mediante socket parte de esa lista a un
>>> cliente cuando el cliente le dice que no tiene nada que hacer, el problema
>>> esta en que el server tambien trata los items de la cola y a pesar de tener
>>> un if que me valida el largo de la cola para saber cuantos items voy a
>>> enviar, me termina siempre al final dando un error de que estoy intentando
>>> sacar elementos de una cola que se quedo vacia, a pesar de haber hecho
>>>
>>> if cola > 4:
>>>  for i in range(4)
>>>    socket.send(cola.pop(0))
>>>
>>> Lo que pasa es que estoy tambien manejando hilos, y el server principal
>>> tambien va haciendo parte de tareas de esa cola. No se si lo que pase sea
>>> que mientras se entra en el if y se cumple el for, el largo de esa cola
>>> baja y ahi ocurre la excepcion, por eso me pregunto, los hilos trabajan de
>>> uno a uno en python segun comprendo, pero pudieran alterar el tamano de la
>>> cola ambos hilos entre el if y el for.
>>>
>>> Espero puedan comprender y ayudarme. Gracias nuevamente.
>>>
>>> --
>>> Enrique A Villafañe
>>>
>>> *Telefonos de Contacto*
>>>
>>> Celular : +58 412 5151603
>>> Oficina: +58 273 5325224 - +58 273 5321592 - +58 273 5325527
>>>
>>> _______________________________________________
>>> pyar mailing list pyar en python.org.ar
>>> http://listas.python.org.ar/listinfo/pyar
>>>
>>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>>
>>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>>> Argentina - http://www.usla.org.ar
>>>
>>
>>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>



-- 

Ricardo Daniel Quiroga
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20150826/7295a97e/attachment.html>


More information about the pyar mailing list