From 377ca66aef4d2558e986e0722bf8aa38d9640951 Mon Sep 17 00:00:00 2001 From: Pau Date: Thu, 17 Oct 2024 15:41:02 +0200 Subject: [PATCH] corrected infinite loop --- threads03/README | 62 +++++++++++++++++++++++++++++++++++++++++++ threads03/thread03.py | 37 ++++++++++++++++++++++++++ 2 files changed, 99 insertions(+) create mode 100644 threads03/README create mode 100644 threads03/thread03.py diff --git a/threads03/README b/threads03/README new file mode 100644 index 0000000..349898f --- /dev/null +++ b/threads03/README @@ -0,0 +1,62 @@ +### Thread03 ### + +**Resultado:** + + +Tarea realizada +Tarea realizada +Tarea realizada +Tarea realizada +Tarea realizada +Tarea realizada +Tarea realizada +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA +tarea NO REALIZADA + + +**Explicación:** +El ejercicio consiste de dos hilos. Uno crea 100 puntos (uno cada 1 segundo) y el otro crea 50 rayas (una cada 2 segundos). +En el output final podemos ver que, consistentemente aparecen dos puntos y una raya. La razón de que al principio aparezcan solo un punto y una raya es que, al correr lo dos hilos en paralelo, no siguen un orden exacto de impresión en consola. Sin embargo, al imprimirse más rápido los puntos que las rayas, el output "-..-" es el más común. + diff --git a/threads03/thread03.py b/threads03/thread03.py new file mode 100644 index 0000000..3a082e9 --- /dev/null +++ b/threads03/thread03.py @@ -0,0 +1,37 @@ +import threading +import time +import random + +def tareaUno(): + global Done + time.sleep(abs(random.gauss(mu=0.0, sigma=1.0))) + if not Done: + print("Tarea realizada") + time.sleep(0.12) + Done = True + else : + print ("tarea NO REALIZADA") + time.sleep(0.05) + return + + +def desactivar(): + global Done + while True: + time.sleep(abs(random.gauss(mu=0.0, sigma=1.0))) + if Done: + Done = False + print("Desactivo") + + if all(not t.is_alive() for t in hilos): + break + +Done = False +hilos = list() +for i in range(50): + t = threading.Thread(target=tareaUno) + hilos.append(t) + t.start() + +desbloqueo_thread = threading.Thread(target=desactivar) +desbloqueo_thread.start()