← Volver

Cómo retornar un valor desde un hilo («thread»)

No es posible devolver un valor vía return desde una función que se ejecuta en otro hilo y obtenerlo en el hilo principal. Sin embargo, se puede simular este procedimiento usando una cola vía la clase estándar queue.Queue, que provee un tipo de dato para compartir información entre hilos de forma segura.

import queue
import threading
import time

def worker(q: queue.Queue):
"""
Esta función se ejecuta en otro hilo.
"""
# Ejecutar alguna operación pesada.
time.sleep(3)
# Poner el valor de rertorno del hilo en la cola.
# Reemplácese 5 por el valor que se quiera devolver.
q.put_nowait(5)

# Cola para guardar el resultado del hilo.
q = queue.Queue()
# Iniciar el hilo.
t = threading.Thread(target=worker, args=(q,))
t.start()
# Esperar a que finalice.
t.join()
# Obtener el resultado.
result = q.get_nowait()
print("Resultado del hilo:", result)



¿Alguna duda sobre este código? ¡Preguntanos en el foro!