¿Sabes qué es import threading?
Cuando recién empecé a trabajar con Python, una de las primeras cosas que pude notar es su gran facilidad para realizar tareas de forma secuencial. No obstante, ¿qué sucede si quieres ejecutar varias tareas al mismo tiempo? Pues eso tampoco es problema para el genio de Python, pues puedes usar el módulo threading y su import trheading, el cual en este artículo te enseñaré a manejar y sacarle el mayor provecho.
¿Qué es import threading en Python?
Threading es un módulo que nos permite ejecutar múltiples hilos en paralelo dentro de un mismo programa. El hilo es la únidad básica de CPU que puede ejecutar tareas de manera independiente. Gracias a threading puedes realizar múltiples tareas al mismo tiempo, entre las que se encuentran descargar archivos, procesar datos o manejar eventos de usuario, lo cual mejora muchísimo el rendimiento de tus programas. Import threading es la manera en la que puedes empezar a usar este módulo, ya que, como su nombre lo indica, sirve para importarlo a un programa que estés escribiendo.
¿Cómo usar import threading?
Para usar threading, simplemente necesitas importar el módulo en tu código. Así puedes iniciar un hilo:
import threading
def tarea():
print("Hola desde un hilo")
hilo = threading.Thread(target=tarea)
hilo.start()
hilo.join()
En este ejemplo:
- Se define una función llamada tarea.
- Se crea un hilo asignando la función como el objetivo.
- El método start inicia el hilo, y join asegura que el programa principal espere a que el hilo termine.
Hilos con parámetros
Si necesitas pasar parámetros a un hilo, puedes hacerlo utilizando el argumento args:
import threading
def saludar(nombre):
print(f"Hola, {nombre}")
hilo = threading.Thread(target=saludar, args=("Pythonista",))
hilo.start()
🔴 ¿Quieres Aprender a Programar con Python? 🔴
Descubre el Full Stack Jr. Bootcamp - Aprende a Programar desde Cero de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada
👉 Prueba gratis el Bootcamp Aprende a Programar desde Cero por una semanaEn este caso, el hilo imprimirá un saludo personalizado.
Sincronización de hilos con locks
Si varios hilos tienen acceso a un recurso compartido, ya sea una variable o un arhcivo y demás, es importante evitar conflictos. Para que ello no ocurra, puedes usar objetos lock, que te permiten bloquear un recurso mientras un hilo lo utiliza. Así puedes hacerlo:
import threading
lock = threading.Lock()
contador = 0
def incrementar():
global contador
with lock:
local_contador = contador
local_contador += 1
contador = local_contador
hilos = [threading.Thread(target=incrementar) for _ in range(10)]
for hilo in hilos:
hilo.start()
for hilo in hilos:
hilo.join()
print(f"El contador final es: {contador}")
El lock asegura que solo un hilo a la vez pueda modificar el recurso compartido, evitando errores de concurrencia.
Eventos y temporizadores en threading
Además de los hilos básicos, el módulo threading ofrece herramientas avanzadas como eventos y temporizadores.
- Un evento permite a un hilo esperar hasta que otro hilo lo notifique:
import threading
evento = threading.Event()
def tarea():
print("Esperando señal...")
evento.wait()
print("¡Señal recibida!")
hilo = threading.Thread(target=tarea)
hilo.start()
input("Presiona Enter para enviar la señal...")
evento.set()
- Los temporizadores ejecutan una tarea después de un tiempo determinado:
import threading
def tarea_temporizada():
print("Esta tarea se ejecuta después de 5 segundos")
temporizador = threading.Timer(5, tarea_temporizada)
temporizador.start()
Threading y la Global Interpreter Lock
Dentro de Python existe cierta limitación conocida como Global Interpreter Lock o GIL, que permite que solo un hilo ejecute código Python a la vez. Si bien esto no afecta a las tareas de entrada y salida, puede limitar el rendimiento con tareas intensivas de cálculo. Si requieres el aprovechamiento de múltiples núcleos, considera usar el módulo multiprocessing.
Si quieres adquirir conocimientos sólidos acerca de programación y quieres triunfar en la industria tecnológica, el bootcamp de programación desde cero es tu puerta para ingresar a este mundo. Con él aprenderás rápidamente todo lo que necesitas para incursionar en el mercado tech y adquirir las mejores ofertas de empleo. ¡No dejes pasar esta oportunidad! Aprende de la mano de los mejores profesionales y sigue escalando hacia tu futuro.