HOWTO · Python

Cómo esperar 5 segundos en Python

Este tutorial explica cómo esperar 5 segundos en Python.

En esta página

En el código síncrono habitual de Python, llama a time.sleep(5) para pausar el hilo actual durante unos cinco segundos. Usa threading.Event si otro hilo puede avisar para reanudar antes, threading.Timer para ejecutar una función de retorno después de un retraso, asyncio.sleep() dentro de una corrutina o sched cuando necesites ejecutar eventos programados.

Usa la función time.sleep() para esperar 5 segundos en Python

La función time.sleep() recibe una duración en segundos y suspende el hilo que la llama. La duración puede ser fraccionaria, como 0.5, pero cinco segundos es el retraso mínimo solicitado, no una garantía de que el hilo se reanude justo entonces; la planificación del sistema operativo puede prolongar la pausa real.

Este ejemplo independiente imprime un mensaje antes y después de la pausa:

import time

print("Waiting")
time.sleep(5)
print("Finished")
Waiting
Finished

Usa este método en un script síncrono sencillo. Mientras el hilo está suspendido, no puede realizar otras tareas. Una interrupción normal del teclado, como Ctrl+C, puede interrumpir la espera; para este caso normalmente no hace falta gestionar señales de forma personalizada.

Usa la biblioteca threading con la clase Event para esperar 5 segundos en Python

threading.Event es una primitiva de coordinación entre hilos. La llamada wait(5) bloquea el hilo que la ejecuta durante un máximo de cinco segundos y regresa antes si otro hilo activa el evento. Es útil cuando un hilo de trabajo debe esperar una señal o hasta que venza el tiempo límite.

import threading

ready = threading.Event()
print("Waiting")
ready.wait(5)
print("Finished")
Waiting
Finished

En este ejemplo ningún otro hilo activa ready, así que la espera dura hasta que vence el tiempo límite. En un programa coordinado, otro hilo puede llamar a ready.set() para despertar al que espera. Si la siguiente acción depende de que el evento se haya activado antes del límite, comprueba el valor que devuelve wait().

Usa la biblioteca threading con la clase Timer() para esperar 5 segundos en Python

threading.Timer es una clase que inicia un hilo independiente e invoca una función de retorno después de un retraso. No pausa el hilo que la inicia. Si un script breve debe esperar a que termine la función, mantén el temporizador activo con join(); llama a cancel() si ya no necesitas la función y todavía no ha comenzado.

from threading import Timer


def report():
    print("Callback ran")


print("Timer started")
timer = Timer(5, report)
timer.start()
timer.join()
print("Main thread finished")
Timer started
Callback ran
Main thread finished

La función se ejecuta en el hilo del temporizador, mientras que join() hace que el hilo principal espere a que ese hilo termine. Un temporizador programa una sola llamada; para repetirla o gestionar varios eventos, usa un bucle o un planificador.

Usa asyncio.sleep() para esperar 5 segundos en código asíncrono

Dentro del código asíncrono, await asyncio.sleep(5) suspende la corrutina actual y permite que el bucle de eventos ejecute otras tareas. No bloquea el hilo del bucle de eventos como lo haría time.sleep(5).

import asyncio


async def main():
    print("Waiting")
    await asyncio.sleep(5)
    print("Finished")


asyncio.run(main())
Waiting
Finished

Usa asyncio.run(main()) para iniciar este script independiente. Si la aplicación ya tiene un bucle de eventos en marcha, llama a la corrutina o prográmala dentro de ese bucle en lugar de iniciar otro con asyncio.run().

Usa el módulo sched para esperar 5 segundos en Python

El módulo sched proporciona un planificador de eventos de propósito general. Añade un evento indicando el retraso, la prioridad, la función de retorno y sus argumentos opcionales; después, llama a run() para procesar la cola. Si el siguiente evento aún no está listo, run() espera hasta que llegue el momento de ejecutarlo. Esto sirve para gestionar eventos programados, aunque requiere más configuración que una pausa puntual.

import sched
import time


def report():
    print("Scheduled event ran")


scheduler = sched.scheduler(time.monotonic, time.sleep)
print("Scheduler started")
scheduler.enter(5, 1, report)
scheduler.run()
print("Scheduler finished")
Scheduler started
Scheduled event ran
Scheduler finished

El planificador usa un reloj monotónico, por lo que los cambios en la hora del sistema no afectan a la programación basada en el tiempo transcurrido. Su función de espera es time.sleep, y run() no regresa hasta que se ejecuta el evento en cola.

Conclusión

Elige time.sleep(5) para una pausa síncrona sencilla. Usa threading.Event.wait(5) si otro hilo puede avisar al que espera, threading.Timer para ejecutar una sola función más tarde, asyncio.sleep(5) dentro de una corrutina para que puedan avanzar otras tareas, y sched para gestionar uno o varios eventos programados. La duración de cada espera es aproximada: el sistema operativo y el bucle de eventos determinan cuándo vuelve a ejecutarse el código en espera.