Learning Center
Programação Python

Como usar time.sleep() em Python

14 out. 2025
Hostman Team
Hostman Team

Às vezes, durante a execução de um programa, é necessário fazer uma pausa: aguardar o carregamento de dados, dar tempo para o usuário inserir uma entrada ou reduzir a carga no sistema. Uma das maneiras mais simples de fazer isso em Python é com a função time.sleep(), que suspende a execução do programa por um intervalo de tempo especificado.

Neste artigo, veremos como o time.sleep() funciona em Python, seus recursos e alternativas, erros comuns e quando é mais adequado usar asyncio.sleep() ou outros mecanismos de espera — especialmente em programas multithread e assíncronos.

O que é a função sleep() em Python?
Copiar link

A função sleep() faz parte da biblioteca padrão do Python e foi criada para facilitar a criação de pausas no código. Ela pertence ao módulo time e é chamada como time.sleep(), permitindo suspender temporariamente a execução do programa por um determinado número de segundos.

Na prática, sleep() é útil para testes, intervalos entre requisições de API ou pausas entre mensagens. No entanto, ela não deve ser usada para tarefas de sincronização de threads ou situações que exigem controle preciso de tempo — existem ferramentas mais adequadas para isso.

Como time.sleep() funciona
Copiar link

A função time.sleep() pausa a thread atual pelo número de segundos especificado. Em um programa multithread, outras threads continuam rodando, enquanto aquela em que time.sleep() foi chamada permanece “congelada” durante o intervalo.

Importante: time.sleep() bloqueia a execução do código naquele ponto, atrasando todas as operações seguintes. Usá-la de forma incorreta pode causar perda de desempenho ou até congelar a interface de um aplicativo desktop.

Quando usar time.sleep()
Copiar link

time.sleep() é usada principalmente em testes e depuração, quando é necessário adicionar um pequeno atraso — por exemplo, para verificar a resposta de uma API ou aguardar o retorno de um servidor. Também é usada para executar scripts passo a passo, dando tempo para o usuário visualizar informações ou inserir dados.

Em demonstrações, tutoriais e prototipagem, time.sleep() ajuda a simular processos demorados. Quando usada com serviços externos, evita punições ou bloqueios por excesso de requisições. Mas ela não é a única maneira de pausar a execução de um programa — veja outras alternativas a seguir.

Como usar time.sleep() em Python
Copiar link

Usar time.sleep() em Python é muito simples, até mesmo para iniciantes. Mas entender seus detalhes é importante, pois eles podem afetar o desempenho ou o comportamento do programa.

Sintaxe básica
Copiar link

Para usar a função, primeiro importe o módulo time:

import time
time.sleep(5)

Neste exemplo, o programa “dorme” por 5 segundos. O número passado pode ser inteiro ou decimal, permitindo pausas de frações de segundo.

Sintaxe:

time.sleep(seconds)

A função não retorna nenhum valor — ela apenas suspende a execução da thread atual pelo tempo indicado.

Exemplo: atraso na execução do código
Copiar link

Um pequeno script que imprime mensagens com um intervalo de 2 segundos:

import time
print("First message")
time.sleep(2)
print("Second message")
time.sleep(2)
print("Third message")

Durante a execução, o usuário verá uma pausa de 2 segundos entre cada mensagem. É exatamente assim que um atraso funciona em Python com time.sleep(2).

Parâmetros de time.sleep()
Copiar link

A função aceita apenas um parâmetro, mas ele pode ser um inteiro ou um float. Isso permite flexibilidade na definição das pausas.

Valor em segundos
Copiar link

O uso mais comum é passar um número inteiro representando segundos:

time.sleep(10)

O script pausa por 10 segundos, útil para intervalos longos ou para limitar a frequência de solicitações.

Frações de segundo (milissegundos)
Copiar link

Quando é necessária uma pausa mais curta, use um número decimal:

time.sleep(0.5)

Isso cria uma pausa de meio segundo. Devido a limitações do sistema operacional e do temporizador interno do Python, o atraso pode ser ligeiramente superior a 500 ms. Para sistemas em tempo real, é melhor usar temporizadores especializados.

Formas alternativas de pausar em Python
Copiar link

Embora time.sleep() seja a maneira mais popular e simples, existem outras opções mais adequadas em determinados contextos, como ao lidar com eventos externos ou múltiplas threads.

1. Usar input() para aguardar
Copiar link

O método mais simples para parar um programa é com input(). Ele pausa a execução até que o usuário pressione Enter ou insira algum texto.

print("Press Enter to continue...")
input()
print("Resuming program execution")

Tecnicamente, não é um atraso temporizado, mas uma espera por ação do usuário. É útil durante depuração ou em scripts interativos.

2. Usar threading.Event()
Copiar link

Em programas multithread, é possível usar objetos de sincronização como threading.Event(), que bloqueiam uma thread até que um sinal seja recebido.

import threading
event = threading.Event()

def worker():
    print("Starting work in thread")
    event.wait()
    print("Event received, resuming work")

thread = threading.Thread(target=worker)
thread.start()

import time
time.sleep(3)
event.set()

Nesse caso, a thread fica bloqueada até a chamada de event.set(). Essa abordagem é mais flexível, pois permite “acordar” a thread a qualquer momento.

3. asyncio.sleep() para programas assíncronos
Copiar link

Em programas assíncronos (módulo asyncio), usa-se asyncio.sleep(). Diferente de time.sleep(), ela não bloqueia a thread inteira, apenas a corrotina atual, permitindo que o event loop continue executando outras tarefas.

import asyncio

async def main():
    print("Start async work")
    await asyncio.sleep(2)
    print("2 seconds passed, resuming")

asyncio.run(main())

Isso é especialmente útil quando várias funções assíncronas precisam ser executadas em paralelo. Usar time.sleep() nesse contexto bloquearia todo o event loop.

Problemas comuns com time.sleep()
Copiar link

Apesar de simples, time.sleep() pode causar bloqueios ou atrasos indesejados se usada incorretamente. Compreender seus efeitos é essencial para evitar problemas de desempenho.

Bloqueio da thread principal
Copiar link

time.sleep() bloqueia a thread em que é chamada. Se for usada na thread principal de um aplicativo com interface gráfica (como Tkinter ou PyQt), a interface pode travar.

💡 Dica:
Use time.sleep() apenas em threads secundárias ou substitua por asyncio.sleep() para evitar bloqueios. Em aplicações gráficas, prefira temporizadores como QTimer ou after().

Uso em código multithread e assíncrono
Copiar link

Em programas multithread, time.sleep() pode ser chamada independentemente em cada thread, mas não libera automaticamente o Global Interpreter Lock (GIL). A execução simultânea de outras threads depende do agendador de threads do sistema operacional.

Em código assíncrono, evite chamar time.sleep() dentro de um loop de eventos (asyncio.run()), pois isso bloqueia toda a execução. Use asyncio.sleep(), que entrega o controle de volta ao agendador, permitindo que outras corrotinas rodem em paralelo.

Exemplo prático: consultas periódicas a uma API
Copiar link

Imagine um script que precisa consultar uma API externa, mas as regras impõem no máximo uma requisição a cada 30 segundos.

Solução com time.sleep():

import time
def poll_api():
    print("Making API request...")
def main():
    while True:
        poll_api()
        time.sleep(30)
if __name__ == "__main__":
    main()

Após cada requisição, o script pausa 30 segundos, respeitando o limite de frequência.

Alternativa assíncrona:

import asyncio
async def poll_api():
    print("Making API request...")
async def main():
    while True:
        await poll_api()
        await asyncio.sleep(30)
if __name__ == "__main__":
    asyncio.run(main())

Essa versão não bloqueia o programa inteiro, permitindo que outras tarefas sejam executadas simultaneamente. É uma solução mais eficiente e escalável.

Conclusão
Copiar link

Gerenciar pausas e atrasos é uma parte importante do desenvolvimento em Python. time.sleep() é a ferramenta mais simples e intuitiva, mas a escolha entre time.sleep(), asyncio.sleep() e outras opções deve depender da arquitetura do projeto.

Recomendações principais:
Copiar link

  • Use time.sleep() para atrasos curtos em testes, entre requisições ou em demonstrações.

  • Evite bloquear a thread principal em aplicações com interface gráfica.

  • Em código assíncrono, substitua por asyncio.sleep() para manter o loop eficiente.

  • Em programas multithread, lembre-se de que apenas a thread atual pausa.

  • Use threading.Event() ou input() para aguardar eventos ou ações do usuário.