Login
Login

Como usar time.sleep() em Python

Como usar time.sleep() em Python
Hostman Team
Technical writer
Python
14.10.2025
Reading time: 8 min

À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?

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

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()

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

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

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

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()

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

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)

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

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

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()

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

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()

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

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

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

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

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:

  • 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.
Python
14.10.2025
Reading time: 8 min

Semelhante

Tem perguntas,
comentários ou preocupações?

Nossos profissionais estão disponíveis para ajudá-lo a qualquer momento,
seja para assistência ou apenas se você não souber por onde começar.
Envie-nos um e-mail
Hostman's Support