[pyar] Dependencias, threading.Event y sincronizacion
Andres Riancho
andres.riancho en gmail.com
Vie Mayo 24 20:05:53 ART 2013
Pyar,
Estoy actualmente armando un software que corre una serie de
tareas que son "parcialmente dependientes" entre ellas, por lo que las
ejecuto secuencialmente. Lamentablemente esto lleva mucho tiempo y hay
cosas que me gustaria paralelizar; y por ese lado viene la pregunta.
Vamos con un ejemplo para que se entienda.
Tarea A:
Subtarea A1
Subtarea A2
Subtarea A3
Tarea B:
Subtarea B1
Subtarea B2
Subtarea B3: Para iniciar subtarea A2 debe haber terminado
Tarea C:
Subtarea C1
Subtarea C2: Para iniciar subtarea A3 y subtarea B3 deben haber terminado
Subtarea C3
Hoy por hoy lo que hago es ejecutar A() , B() , C(). El problema
de esto es que los tiempos de ejecucion se hacen largos (nada que ver
con IO o CPU usage), entonces estaba buscando una solucion para
ejecutar esto en paralelo, cual les parece la mejor solucion?
De mi investigacion me parecio que se podria usar
threading.Event() y threads de la siguiente manera:
evento_a2_finalizado = threading.Event()
evento_a3_b3_finalizados = threading.Event()
threading.Thread(target=A).start()
threading.Thread(target=B).start()
threading.Thread(target=C).start()
Internamente cuando termina A2 hago un set() de
`evento_a2_finalizado` y en B3 hago un `evento_a2_finalizado.wait()`.
Algo similar con el otro evento. De esta manera se ejecutan en
paralelo varias cosas y gano tiempo.
Es la primera vez que me topo con un problema como estos, alguien
con experiencia en Events para contarme que le parece? Otro metodo
para resolver el problema?
Gracias!
Saludos,
--
Andrés Riancho
Project Leader at w3af - http://w3af.org/
Web Application Attack and Audit Framework
Twitter: @w3af
GPG: 0x93C344F3
More information about the pyar
mailing list