[Python-es] Threads con operaciones I/O en Python

Antonio Beamud Montero antonio.beamud en gmail.com
Mar Jun 8 17:14:12 CEST 2010


lasizoillo escribió:
> El día 8 de junio de 2010 16:11, Antonio Beamud Montero
> <antonio.beamud en gmail.com> escribió:
>   
>> Fél
>> Si los hilos son de proceso están muy ligados a E/S te recomiendo gevent
>> (http://www.gevent.org/). El api es muy similar a trabajar con hilos, pero
>> por debajo usa libevent, para trabajar de forma asincrona.
>>
>>     
>
> No entiendo las ventajas de usar gevent para este caso concreto.
> Entendería usarla si se dieran las siguientes condiciones:
>  * No va a tener problemas con librerias que no cooperan
>  * Va a necesitar de hilos a cascoporro y quiere minimizar el overhead
>  * Va a sacar partido de usar los pollers (kevent, epoll, ...) que
> proporciona libevent.
>  * Evitar cambios de contexto en los hilos le va a suponer una ventaja
>
> El primer punto lo veo conflictivo en su caso. Porque va a usar
> librerias que no van a cooperar con los greenlets. Así que usar gevent
> le puede dar más problemas que ventajas.
>
>   

Cierto, he leido su mensaje un poco por encima y no me he fijado 
demasiado, me he guiado más por el asunto del mensaje.

> No creo que vaya a necesitar de muchos hilos. Así que el número de
> hilos python a usar no debería suponer mucho overhead. Tampoco creo
> que vaya a notar mucha diferencia entre un poller como select o uno
> como epoll si el numero de eventos registrados es mínimo.
>
>   

Bueno, aqui depende de como lo programes, puedes lanzar un Greenlet por 
acción, evento, lo que sea, son muy ligeros.

> ¿Me estoy perdiendo algo del maravilloso framework gevent? ¿De qué
> forma ventajosa se podría utilizar en este caso concreto? También es
> verdad que si usa  gevent mediante monkey-patching la prueba es gratis
> ;-)
>
>   

No he he seguido todo el hilo, como te comentaba. Puede que si mira 
gevent, a lo mejor diseña de otra forma su aplicación o le da alguna 
idea de como resolver algún problema que se pueda presentar, bien ahora, 
bien en el futuro.

Saludos.




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