Dominar time.sleep() en Python: Mejores Prácticas, Multihilo y Ejemplos Reales
Python time.sleep()
El método time.sleep() pausa el hilo actual durante un número especificado de segundos.
El módulo time de Python ofrece una gama de utilidades para trabajar con el tiempo. Entre ellas, time.sleep() es esencial para añadir retrasos deliberados, sincronizar hilos o limitar operaciones.
Ejemplo 1: Uso Básico
import time
print("Impreso inmediatamente.")
time.sleep(2.4)
print("Impreso después de 2.4 segundos.")
Este script simple demuestra que time.sleep() acepta un argumento de punto flotante. En Python 3.5 y posteriores, la función garantiza una duración mínima de sueño; versiones anteriores pueden dormir ligeramente más.
Ejemplo 2: Reloj Digital
import time
while True:
local = time.localtime()
print(time.strftime("%I:%M:%S %p", local))
time.sleep(1)
El bucle imprime la hora local actual cada segundo. Para evitar saturar la terminal, la versión mejorada actualiza la misma línea:
import time
while True:
local = time.localtime()
print(time.strftime("%I:%M:%S %p", local), end="", flush=True)
print("\r", end="", flush=True)
time.sleep(1)
Consulta la documentación de Python para time.sleep() para más detalles.
Entendiendo los Hilos
Un proceso es un programa en ejecución; los hilos son unidades ligeras dentro de ese proceso. Múltiples hilos pueden ejecutarse concurrentemente, compartiendo el mismo espacio de memoria.
Ejemplo 3: Multihilo Simple
import threading
def greet_hello():
for _ in range(3):
print("Hello")
def greet_hi():
for _ in range(3):
print("Hi")
t1 = threading.Thread(target=greet_hello)
t2 = threading.Thread(target=greet_hi)
t1.start()
t2.start()
Como t1 y t2 se ejecutan concurrentemente, el orden de salida puede variar en cada ejecución.
time.sleep() en Contextos Multihilo
En programas de un solo hilo, time.sleep() detiene todo el proceso. En un entorno multihilo, solo se pausa el hilo que llama, permitiendo que otros hilos continúen.
Ejemplo 4: Pausar Hilos de Forma Diferente
import threading, time
def say_hello():
for _ in range(4):
time.sleep(0.5)
print("Hello")
def say_hi():
for _ in range(4):
time.sleep(0.7)
print("Hi")
t1 = threading.Thread(target=say_hello)
t2 = threading.Thread(target=say_hi)
t1.start()
t2.start()
Aquí, un hilo duerme 0.5 s mientras que el otro duerme 0.7 s, ilustrando ritmos independientes.
Para más información sobre hilos, consulta el módulo threading de Python.
python
- Dominando tipos de datos en Python: Guía práctica
- Dominando operadores en Python: Guía completa
- Dominando la sentencia pass en Python: Guía práctica
- Dominando argumentos de funciones en Python: Posicionales, por palabra clave y por defecto
- Dominando Diccionarios en Python: Creación, Manipulación y Técnicas Avanzadas
- Dominando Iteradores en Python: Cómo Funcionan y Cómo Crear los Tuyos
- Explicación de Closures en Python: Cómo las Funciones Anidadas Capturan Variables
- Dominando datetime en Python: Guía Práctica de Fechas, Horas y Zonas Horarias
- Obtener la Fecha y Hora Actual en Python: Guía Práctica
- Python: Obtener Hora Actual y Datos de Zona Horaria Fácilmente
- Dominar el Módulo time de Python: Funciones, Structs y Ejemplos Prácticos