Este tutorial le enseñará a utilizar la función sleep() del módulo de tiempo incorporado en Python para añadir retardos de tiempo al código.
Cuando ejecuta un programa Python simple, la ejecución del código ocurre secuencialmente -unasentencia tras otra- sin ningún retardo de tiempo. Sin embargo, puede que necesite retrasar la ejecución del código en algunos casos. La función sleep()
del módulo de tiempo incorporado en Python le ayuda a hacerlo.
En este tutorial, aprenderá la sintaxis de uso de la función sleep( )
en Python y varios ejemplos para comprender cómo funciona. ¡Empecemos!
Sintaxis de la función time.sleep() de Python
El módulo time
integrado en la biblioteca estándar de Python, proporciona varias funciones útiles relacionadas con el tiempo. Como primer paso, importe el módulo time
a su entorno de trabajo:
import time
Como la función sleep
() forma parte del módulo time
, ahora puede acceder a ella y utilizarla con la siguiente sintaxis general:
time.sleep(n)
Aquí, n
es el número de segundos a dormir. Puede ser un número entero o un número de coma flotante.
A veces, el retardo requerido puede ser de unos pocos milisegundos. En estos casos, puede convertir la duración en milisegundos a segundos y utilizarla en la llamada a la función dormir. Por ejemplo, si desea introducir un retardo de 100 milisegundos, puede especificarlo como 0,1 segundo: time.sleep(0,1)
.
▶ También puede importar sólo la función sleep
del módulo time
:
from tiempo import dormir
Si utiliza el método anterior para importar, podrá llamar directamente a la función sleep()
sin utilizar el tiempo .sleep()
.
Ahora que ha aprendido la sintaxis de la función dormir( )
de Python, vamos a codificar ejemplos para ver la función en acción. Puede descargar los scripts de Python utilizados en este tutorial de la carpeta python-sleep en este repositorio de GitHub. 👩🏽💻
Retrasar la ejecución de código con sleep()
Como primer ejemplo, utilicemos la función sleep para retrasar la ejecución de un sencillo programa Python.

En el siguiente fragmento de código
- La primera sentencia
print(
) se ejecuta sin ningún retardo. - A continuación, introducimos un retardo de 5 segundos utilizando la función sleep(
)
. - La segunda sentencia
print
() se ejecutará sólo después de que finalice la operación sleep.
# /python-sleep/simple_example.py
import time
print("Imprimir ahora")
time.sleep(5)
print("Imprimir después de dormir 5 segundos")
Ejecute ahora el archivo simple_ejemplo .py
y observe la salida:
$ python3 simple_ejemplo.py
Añadir diferentes retardos a un bloque de código
En el ejemplo anterior, hemos introducido un retardo fijo de 5 segundos entre la ejecución de dos sentencias print()
. A continuación, vamos a codificar otro ejemplo para introducir diferentes tiempos de retardo al recorrer un iterable.
En este ejemplo, nos gustaría hacer lo siguiente:
- Recorrer en bucle una frase, acceder a cada palabra e imprimirla.
- Después de imprimir cada palabra, nos gustaría esperar un tiempo determinado antes de imprimir la siguiente palabra de la frase.
Recorrer en bucle una cadena de cadenas
Considere la cadena, sentencia
. Es una cadena en la que cada palabra es una cadena en sí misma.
Si hacemos un bucle a través de la cadena, obtendremos cada carácter, como se muestra:
>>> sentencia = "¿Cuánto tardará esto?"
>>> para char en sentencia:
... print(char)
# Salida (truncada para facilitar la lectura)
H
o
w
.
.
.
t
a
k
e
?
Pero esto no es lo que queremos. Nos gustaría recorrer la frase en bucle y acceder a cada palabra. Para ello, podemos llamar al método split(
) sobre la cadena de la frase
. Esto devolverá una lista de cadenas -obtenida dividiendo la cadena de la
sentencia- en todas las apariciones de espacios en blanco.
>>> sentence.split()
['¿Cuánto', 'tiempo', 'tardará', 'esto', 'tardará?']
>>> for word in sentence.split():
... print(word)
# Salida
¿Cuánto
tiempo
tardará
esto
?
Recorrer iterables con diferentes retardos
Volvamos al ejemplo:
sentencia
es la cadena que queremos recorrer en bucle para acceder a cada palabra.delay_times
es la lista de tiempos de retardo que utilizaremos como argumento de la funciónsleep(
) durante cada pasada por el bucle.
Aquí nos gustaría recorrer simultáneamente dos listas: la lista delay_times
y la lista de cadenas obtenidas al dividir la cadena de la frase
. Puede utilizar la función zip( )
para realizar esta iteración paralela.
La función zip() de Python: zip(lista1, lista2) devuelve un iterador de tuplas, donde cada tupla contiene el elemento en el índice i en lista1 y lista2.
# /python-dormir/tiempos_dormir.py
import tiempo
tiempos_dormir = [3,4,1.5,2,0.75]
frase = "¿Cuánto tardará esto?"
para tiempos_dormir,palabra en zip(tiempos_dormir,frase.split()):
print(palabra)
tiempo.dormir(tiempos_dormir)
Sin la función dormir, el control pasaría inmediatamente a la siguiente iteración. Como hemos introducido un retardo, la siguiente pasada por el bucle se produce sólo después de que se complete la operación dormir.
Ejecutar ahora delay_times .py
y observe la salida:
$ python3 retrasar_tiempos.py
Las siguientes palabras de la cadena se imprimirán tras un retardo. El retardo después de imprimir la palabra en el índice i
de la cadena es el número en el índice i
de la lista delay_times
.
Temporizador de cuenta atrás en Python
Como siguiente ejemplo, codifiquemos un sencillo temporizador de cuenta atrás en Python.

Definimos una función countDown()
:
# /python-sleep/countdown.py
import time
def countDown(n):
for i in range(n,-1,-1):
if i==0:
print("¡Listo para empezar!")
else:
print(i)
time.sleep(1)
A continuación, analizaremos la definición de la función countDown()
:
- La función toma un número
n
como argumento y realiza una cuenta atrás hasta cero partiendo de ese númeron
. - Utilizamos time.sleep(1) para conseguir un retardo de un segundo entre las cuentas.
- Cuando la cuenta llega a 0, la función imprime "¡Listo para empezar!".
🎯 Para lograr la operación de cuenta atrás, hemos utilizado la función
range()
con un valor de paso negativo de -1.range(n, -1, -1)
nos ayudará a recorrer en bucle el rango de números en n, n - 1, n - 2, y así sucesivamente hasta cero. Recordemos que el punto final se excluye por defecto cuando se utiliza la función rango()
.
A continuación añadimos una llamada a la función countDown(
) con 5 como argumento.
countDown(5)
Ahora ejecute el script countdown.
py ¡y vea la función countDown
¡en acción!
$ python3 countdown.py
Función Sleep en multihilo
El módulo de hilos de Python ofrece capacidades de multihilo listas para usar. En Python, el Bloqueo Global del Intérprete o GIL asegura que sólo haya un hilo activo ejecutándose en cualquier momento.

Sin embargo, durante las operaciones de E/S y las operaciones de espera como sleep, el procesador puede suspender la ejecución del hilo actual y cambiar a otro hilo que esté esperando.
Para entender cómo funciona esto, pongamos un ejemplo.
Creación y ejecución de hilos en Python
Considere las siguientes funciones, func1()
, func2()
y func3()
. Recorren en bucle un rango de números y los imprimen. A esto le sigue una operación de retardo -por un número específico de segundos- durante cada pasada por el bucle. Hemos utilizado diferentes tiempos de retardo para cada una de las funciones para comprender mejor cómo la ejecución cambia entre hilos de forma concurrente.
import time
def func1():
for i in range(5):
print(f "Ejecutando t1, imprimir {i}.")
time.sleep(2)
def func2():
for i in range(5):
print(f "Ejecutando t2, imprimir {i}.")
time.sleep(1)
def func3():
for i in range(4):
print(f "Ejecutando t3, imprimir {i}.")
time.sleep(0.5)
En Python, puede utilizar el constructor Thread ()
para instanciar un objeto hilo. Utilizando la sintaxis threading.Thread(target = ..., args = ...)
crea un hilo que ejecuta la función target
con el argumento especificado en la tupla args
.
En este ejemplo las funciones, func1
, func2
, y func3
, no reciben ningún argumento. Por tanto, basta con especificar únicamente el nombre de la función como objetivo. A continuación, definimos objetos hilo, t1
, t2
y t3
con func1
, func2
y func3
como objetivos, respectivamente.
t1 = threading.Thread(target=func1)
t2 = threading.Thread(target=func2)
t3 = threading.Thread(target=func3)
t1.start()
t2.start()
t3.start()
Aquí está el código completo para el ejemplo de roscado:
# /python-sleep/threads.py
import time
import threading
def func1():
for i in range(5):
print(f "Ejecutando t1, imprima {i}.")
time.sleep(2)
def func2():
for i in range(5):
print(f "Ejecutando t2, imprima {i}.")
time.sleep(1)
def func3():
for i in range(4):
print(f "Ejecutando t3, imprimir {i}.")
time.sleep(0.5)
t1 = threading.Thread(target=func1)
t2 = threading.Thread(target=func2)
t3 = threading.Thread(target=func3)
t1.start()
t2.start()
t3.start()
Observe la salida. La ejecución se altera entre los tres hilos. El hilo t3
tiene el menor tiempo de espera, por lo que se suspende durante el menor tiempo. El hilo t1
tiene el mayor tiempo de espera de dos segundos, por lo que es el último hilo en terminar la ejecución.
Para saber más, lea el tutorial sobre los fundamentos del multihilo en Python.
Conclusión
En este tutorial, ha aprendido a utilizar la función dormir (
) de Python para añadir retardos de tiempo al código.
Puede acceder a la función sleep( )
desde el módulo de tiempo incorporado, time.sleep()
. Para retrasar la ejecución n segundos, utilice tiempo .sleep(n
). Además, ha visto ejemplos de retrasar iteraciones posteriores en un bucle por diferentes valores, cuenta atrás y multihilo.
Ahora puede explorar las capacidades más avanzadas del módulo time. ¿Quiere trabajar con fechas y horas en Python? Además del módulo de tiempo, puede aprovechar la funcionalidad de los módulos datetime y calendar.
A continuación, aprenda a calcular la diferencia horaria en Python.⏰