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 30 |
import threading import time # Crear un semáforo con 2 permisos semaphore = threading.Semaphore(2) # Función que simula una tarea concurrente que usa el semáforo def worker(id): print(f"Worker {id} está intentando adquirir un permiso...") semaphore.acquire() # Adquirir un permiso print(f"Worker {id} ha adquirido un permiso.") # Simular una tarea que toma tiempo time.sleep(1) print(f"Worker {id} está liberando el permiso.") semaphore.release() # Liberar el permiso # Crear e iniciar varios hilos threads = [] for i in range(5): t = threading.Thread(target=worker, args=(i,)) threads.append(t) t.start() # Esperar a que todos los hilos terminen for t in threads: t.join() print("Todos los hilos han terminado.") |