1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
import threading import time class TortugaThread(threading.Thread): def run(self): i = 0 print("Comienza la Tortuga.") while i < 5: time.sleep(5) print("Tortuga.") i += 1 print("Termina la Tortuga.") class LiebreThread(threading.Thread): def run(self): i = 0 print("Comienza la Liebre.") while i < 5: time.sleep(2) print("Liebre.") i += 1 print("Termina la Liebre.") if __name__ == '__main__': tortuga = TortugaThread() liebre = LiebreThread() tortuga.start() liebre.start() |
Primero, importamos el módulo threading
de Python que nos permitirá crear threads.
Luego, definimos dos clases: TortugaThread
y LiebreThread
, ambas heredando de threading.Thread
. Al heredar de threading.Thread
, podemos definir el método run()
que se ejecutará en un thread separado cuando se llame al método start()
.
En el método run()
de cada clase, definimos una variable i
que se inicializa en 0. A continuación, imprimimos un mensaje que indica que la tortuga o la liebre ha comenzado.
Luego, en un bucle while
que se ejecuta 5 veces, utilizamos el método sleep()
de Python del módulo time
para hacer que el thread se detenga durante un cierto número de segundos. Después de ese tiempo, imprimimos un mensaje que indica que la tortuga o la liebre ha avanzado.
Finalmente, imprimimos un mensaje que indica que la tortuga o la liebre ha terminado.
En el bloque if __name__ == '__main__':
, creamos una instancia de cada clase (TortugaThread
y LiebreThread
) y las iniciamos utilizando el método start()
.
Al iniciar los threads, se ejecutará el método run()
de cada uno de ellos en paralelo. Esto permitirá que la tortuga y la liebre avancen al mismo tiempo y compitan en la carrera.
Si queremos que gane la tortuga se puede añadir .join() a la tortuga tendremos que utilizar el siguiente código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
import threading import time class TortugaThread(threading.Thread): def run(self): i = 0 print("Comienza la Tortuga.") while i < 5: time.sleep(5) print("Tortuga.") i += 1 print("Termina la Tortuga.") class LiebreThread(threading.Thread): def run(self): i = 0 print("Comienza la Liebre.") while i < 5: time.sleep(2) print("Liebre.") i += 1 print("Termina la Liebre.") if __name__ == '__main__': tortuga = TortugaThread() liebre = LiebreThread() tortuga.start() tortuga.join() liebre.start() |