[pyar] Threads o Multiprocessing?

Gabriel gepatino en gmail.com
Vie Oct 21 14:53:26 ART 2011


El 21 de octubre de 2011 12:59, Martin Cerdeira
<martincerdeira en gmail.com>escribió:

> 2011/10/21 Claudio Freire <klaussfreire en gmail.com>
>
>> 2011/10/20 Martin Cerdeira <martincerdeira en gmail.com>:
>> > Se que es una pregunta tipica y, vi que en internet la han hecho, pero
>> > quisiera la opinión de uds. Supongamos que tengo una aplicación que
>> tiene
>> > que ejecutar n procesos. Pero, no los quiero ejecutar linealmente, sino
>> que
>> > quiero poder tener un hilo de ejecución por cada uno, o sea, n hilos.
>> > Qué usarían? Threading? Multiprocessing? Otro?
>>
>> Con la información que diste, no se puede decir nada.
>> Multiprocessing y multithreading cada uno tiene sus pros y contras, es
>> imposible decir qué te vendrá mejor pues no dijiste nada de lo que
>> pensás hacer.
>>
>> Tu pregunta suena como: ¿Que me conviene? ¿Una computadora o un celular?
>>
>>
> No quería aburrir con detalle, pero, se ve que por acortar me quedé
> demasiado corto con la data.
> El programa lo que hace es (va a hacer, porque no lo empecé a programar[0])
> lee una tabla de SQL y, por cada registro realiza una operación que, está
> definida por el usuario, puede ser llamar un script, llamar a un webservice,
> etc. Es como si fuera un DTS, donde, tenés una conexion de origen, una de
> destino y, en el medio podés hacer transformaciones de datos, llamar a
> scripts que hagan "cosas" con esos datos como llamar a un webservice, grabar
> un archivo, no se, lo que se te ocurra.
>
> La idea es, si hago esto "lineal", va a ser más lento que si uso algún tipo
> de hilo. Lo que no me queda muy claro es, según mi caso, cuál me termina por
> convenir.
>
> Espero haber sido claro, sino, avisennnn =)
>
>

En este momento estoy haciendo un proyecto bastante similar, y lo hicimos
con threads. El unico inconveniente es que algunas librerias no son
threadsafe entonces no podes compartir conexiones. Nos pasa principalmente
con stomp (active mq) y creo que con mysql tambien (ahora no recuerdo).

En cuanto a la respuesta de DF, sobre la recomendacion de usar un proceso
por cpu, es algo que habia leido en mas de un thread/tutorial/loquesea, pero
supongo que aplica para aplicaciones con uso intensivo de CPU. Si la
aplicacion es IO bound, supongo que debe ser casi lo mismo que threads y la
principal diferencia es que no tenes problemas de thread safe, pero debería
utilizar mas recursos.

Conta que elegiste y como te funciono en cada caso. Yo tengo pendiente
probar este sistema con procesos, pero no creo que pueda hacerlo a corto
plazo.

-- 
Gabriel E. Patiño
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20111021/56dd8abb/attachment.html>


More information about the pyar mailing list