""" Queue (cola) es usado como metodo de seguridad en procesos e hilos para entornos de intercambio de datos. Sigue los principios FIFO. """ from threading import Thread, Lock, current_thread from queue import Queue import time def worker(q): while True: valor = q.get() # procesando... with lock: print(f'{current_thread().name} tiene valor {valor}') q.task_done() if __name__ == "__main__": q = Queue() # q.put(1) # q.put(2) # q.put(3) # 3 2 1 --> # first = q.get() # print(first) # q.not_empty() # retorna True si la cola esta vacia # q.task_done() # avisa que esta tarea esta liberada # q.join() # bloqua el hilo principal hasta q se complete este hilo lock = Lock() num_hilos = 10 for i in range(num_hilos): hilo = Thread(target=worker, args=(q,)) # 'daemon thread' 'demoniza' el hilo. # Lo termina cuando termina el hilo principal hilo.daemon=True hilo.start() # llenar cola con elementos for i in range(1, 21): q.put(i) q.join() print('Fin Main') """ Thread-1 tiene valor 1 Thread-3 tiene valor 2 Thread-4 tiene valor 3 Thread-5 tiene valor 4 Thread-6 tiene valor 5 Thread-8 tiene valor 6 Thread-7 tiene valor 7 Thread-2 tiene valor 8 Thread-9 tiene valor 9 Thread-10 tiene valor 10 Thread-1 tiene valor 11 Thread-3 tiene valor 12 Thread-4 tiene valor 13 Thread-5 tiene valor 14 Thread-6 tiene valor 15 Thread-8 tiene valor 16 Thread-7 tiene valor 17 Thread-2 tiene valor 18 Thread-9 tiene valor 19 Thread-10 tiene valor 20 Fin Main """