Re: [Python-es] Dudas sobre concurrencia: ¿fork o threads?

Rafael Villar Burke pachi en rvburke.com
Mie Feb 13 19:37:24 CET 2008


Miguel Araujo wrote:
> Por lo que el problema se complica. La pregunta que me ha surgido es cuál es
> la diferencia entre crear threads o hacer forks. Es solo desde el punto de
> vista de como crea el proceso el sistema operativo, todo el rollo de proceso
> ligero o pesado, copy on write de memoria o duplicación de regiones... ¿Da
> igual si lo hago con threads o forks? ¿alguna diferencia real? ¿es uno más
> fácil que otro?
>   
Hasta donde sé, los fork (nuevos procesos) son mucho más costosos en
win32 y, junto con la poca capacidad de gestión de procesos de la que
disponía hasta recientemente esa plataforma, ha hecho que los hilos
fuesen la única opción 'ligera' para manejar la concurrencia en win32.
Eso ha llevado a que sean las interfaces más manejables en esa plataforma.

Otra ventaja, aparte de que la plataforma prácticamente no de soporte a
otros modelos de concurrencia, es que los recursos con compartidos entre
hilos.

En Linux, prácticamente es nulo el coste de creación de un nuevo
proceso, por lo que es la manera más natural de abordar el problema, con
menores complicaciones que los efectos colaterales y la sincronización
entre hilos, y con la ventaja de que la fragilidad de cada proceso no
tiene por qué comprometer la aplicación, al tener espacios de memoria y
de ejecución diferentes.

Por ahí dicen que los hilos son el demonio (threads are evil) ;), pero
supongo que todo depende de la aplicación, la plataforma, y tus
necesidades...

Saludos,

Rafael Villar Burke
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





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