Pular para o conteúdo principal

Função Python time.sleep()

Neste tutorial, você aprenderá como a função time.sleep() funciona e como aplicá-la em seu programa.
Actualizado 15 de jan. de 2025  · 7 min de leitura

Neste tutorial, você aprenderá sobre a função Python sleep() que permite introduzir um atraso na execução do seu programa. Essa é uma função útil, especialmente quando o programa está trabalhando com threads ou mesmo quando você está trabalhando com gráficos e animações. A função sleep está disponível no módulo time, que contém muitas outras funções que lidam com acesso e conversões de tempo. E, embora esse módulo esteja disponível em todas as plataformas, nem todas as funções nele contidas podem estar disponíveis ou mesmo funcionar exatamente da mesma maneira. Vamos dar uma olhada no módulo time.sleep() com mais detalhes...

Módulo de tempo

Este módulo fornece funções que ajudam a manipular o tempo e a usá-lo em seu programa. Há outros módulos "primos" que trabalham com mais precisão com a data e o calendário dentro do seu sistema, mas este módulo está mais focado apenas na manipulação do tempo, trabalhando com horas até milissegundos.

Alguns dos termos que você geralmente ouvirá ao trabalhar com o tempo no mundo da ciência da computação são epoch.

Mas, primeiro, certifique-se de que você importou o módulo de tempo. Para fazer isso, basta digitar:

import time

época

Esse é o ponto exato em que o tempo realmente começou. Isso não significa o nascimento do nosso sistema solar ou quando o homem realmente começou a medir o tempo, mas, na verdade, está relativamente mais próximo do presente. Para o sistema UNIX, a época é 1º de janeiro de 1970, 00:00:00 (UTC) (foi uma quinta-feira, caso você esteja se perguntando...) Para descobrir a época em seu sistema, você pode digitar:

time.gmtime(0)
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)

Isso informará a você o ano (tm_year), o mês (tm_mon), o dia (tm_mday), a hora (tm_hour), o minuto (tm_min) e o segundo (tm_sec). Junto com a semana do dia (tm_wday) - é 3, pois a segunda-feira é marcada como o início da semana e é contada como 0. Em seguida, ele é seguido pelo dia do ano (tm_yday), também conhecido como dia juliano. E, por fim, o sinalizador de horário de verão (tm_isdst) - DST significa horário de verão. Esse campo tem valores 0, -1 ou 1. 0, se o horário de verão não estiver em vigor. 1, se o horário de verão estiver em vigor e, finalmente, -1, se a informação não estiver disponível. Por que não está disponível, você pergunta? Porque as regras de horário de verão são determinadas pela legislação local e podem mudar.

A maioria dos computadores armazena a hora e a data como uma diferença de segundos entre a data de 1º de janeiro de 1970, 00:00:00 (UTC) e a hora que deve ser armazenada. Então, se você for em frente e digitar:

time.time()
1548611182.872067

Isso informará a você os segundos que se passaram desde 1º de janeiro de 1970, 00:00:00 (UTC). Essa diferença é o que chamamos de timestamp ou tempo de época do UNIX, e está na forma de um número de ponto flutuante. Bem... para ser honesto, a diferença não está em termos de segundos, mas em algo chamado ticks. Na maioria dos sistemas UNIX, o relógio faz "ticks" de 50 a 100 vezes em um segundo. Portanto, a hora da época do UNIX é, na verdade, o número de ticks que ocorreram desde 1º de janeiro de 1970, 00:00:00 UTC.

Então, agora que você tem uma ideia do que o módulo de tempo faz. Vamos dar uma olhada na função sleep().

time.sleep()

Em termos simples, o time.sleep() recebe como argumento o número de segundos que você deseja que o programa pare ou seja suspenso antes de avançar para a próxima etapa. Vamos ver isso com a ajuda de um programa simples, no qual simplesmente emitimos a hora atual com uma pausa de 5 segundos entre as próximas execuções - introduzindo, portanto, uma diferença de 5 segundos entre cada impressão da hora atual. O uso do site time.ctime() ajuda você a ver a hora local em uma versão bem formatada.

for count in range(5):
    print(time.ctime())
    # Prints the current time with a five second difference
    time.sleep(5)
Sun Jan 27 18:46:24 2019
Sun Jan 27 18:46:29 2019
Sun Jan 27 18:46:34 2019
Sun Jan 27 18:46:39 2019
Sun Jan 27 18:46:44 2019

A sintaxe da função é: time.sleep(sec) em que sec é o argumento que especifica o número de segundos pelos quais o programa deve ser suspenso. A função não retorna nenhum valor.

sec - O argumento é, na verdade, um número de ponto flutuante, portanto, você pode tornar o tempo de suspensão mais preciso. No entanto, isso é um pouco duvidoso, pois o tempo real de suspensão pode ser menor do que o tempo solicitado ou arbitrariamente maior. Para entender melhor o motivo, imagine que o programa é um problema ou uma tarefa que está sendo tratada por um vendedor diferente em uma loja - quando você suspende o programa, a pessoa que está trabalhando nele recebe outro cliente imediatamente. Mas logo depois (antes dos segundos de suspensão especificados), outro vendedor livre assume a tarefa e a conclui - portanto, o tempo de suspensão pode ser menor. Da mesma forma, o tempo de suspensão pode ser maior do que o solicitado por um valor arbitrário devido ao agendamento de tarefas para todos os vendedores da loja e, portanto, o programa precisa aguardar sua vez. Internamente, isso é mais complexo, é claro, e muitas maneiras de lidar com isso já foram introduzidas.

for count in range(3):
    print(time.ctime())
    # Prints the current time with a five second difference
    time.sleep(2.5)
Sun Jan 27 18:46:49 2019
Sun Jan 27 18:46:52 2019
Sun Jan 27 18:46:54 2019

O Python não oferece garantias sobre o comportamento dessas chamadas de função, especialmente entre plataformas. O motivo subjacente é que a maioria das funções definidas nesse módulo chama funções da biblioteca da plataforma C com o mesmo nome. A precisão realmente depende da precisão do sono do sistema operacional subjacente e, se você precisar pesquisar mais, será bom consultar a documentação da plataforma, pois a semântica dessas funções varia entre as plataformas.

No entanto, há uma boa notícia: a partir da versão 3.5 do Python, o time.sleep(secs) agora dorme pelo menos secs(argumento passado), mesmo que o sono seja interrompido por um sinal (novamente, imagine que o sinal seja um vendedor, conforme discutido acima), exceto se o manipulador de sinal gerar uma exceção.

Então, o que acontece internamente ao usar time.sleep()?
Esta parte destina-se a entender ainda melhor a função, mas não é necessária para que você comece a usar a função em si. Na verdade, a função usa o relógio do sistema, um dispositivo eletrônico em um computador que emite um sinal constante de alta frequência que sincroniza todos os componentes internos e faz parte do processador. Esse módulo gera o que é chamado de solicitações de interrupção (IRQs) em intervalos programáveis. Os IRQs são responsáveis por interromper o código atual que o processador está executando, salvando o estado atual antes de passar o controle para outro trecho de código no sistema operacional.
Portanto, o que a função sleep() faz é chamar a rotina de conclusão de E/S subjacente ou a chamada de procedimento assíncrono para bloquear o processo. O sistema operacional observará que você não deseja fazer mais nada até que um período de tempo limite seja atingido. Assim, quando esse período de tempo limite for atingido, o sistema operacional retomará o processo a partir do último estado de que ele se lembra. E, do seu ponto de vista, foi feita uma simples chamada para a função time.sleep().

Parabéns por você ter dominado a função time.sleep(). Não deixe de conferir o curso Python Data Science Toolbox (Parte 1) do DataCamp para saber mais sobre funções em Python.

Temas

Saiba mais sobre Python

Certificação disponível

curso

Introdução ao Python

4 hr
6M
Domine os fundamentos da análise de dados com Python em apenas quatro horas. Neste curso on-line, você conhecerá a interface Python e explorará os pacotes populares.
Ver DetalhesRight Arrow
Iniciar curso
Ver maisRight Arrow
Relacionado

tutorial

Tutorial de indexação de lista Python()

Neste tutorial, você aprenderá exclusivamente sobre a função index().
Sejal Jaiswal's photo

Sejal Jaiswal

6 min

tutorial

Tutorial de funções Python

Um tutorial sobre funções em Python que aborda como escrever funções, como chamá-las e muito mais!
Karlijn Willems's photo

Karlijn Willems

14 min

tutorial

Tutorial de lambda em Python

Aprenda uma maneira mais rápida de escrever funções em tempo real com as funções lambda.
DataCamp Team's photo

DataCamp Team

3 min

tutorial

Função Python Print()

Saiba como você pode aproveitar os recursos de uma simples função Python Print de várias maneiras com a ajuda de exemplos.
Aditya Sharma's photo

Aditya Sharma

10 min

tutorial

Tutorial de como executar scripts Python

Saiba como executar um script Python a partir da linha de comando e também como fornecer argumentos de linha de comando ao seu script.
Aditya Sharma's photo

Aditya Sharma

10 min

tutorial

Função do sublinhado (_) no tutorial de Python

Neste tutorial, você aprenderá sobre os usos do sublinhado (_) em python.
Hafeezul Kareem Shaik's photo

Hafeezul Kareem Shaik

8 min

Ver maisVer mais