Pular para o conteúdo

Como Usar Delay no Python?

[

Python sleep(): Como Adicionar Atrasos de Tempo ao seu Código

por Mike Driscoll

Introdução

Você já precisou fazer com que o seu programa em Python espere por algo? Na maioria das vezes, você deseja que o seu código seja executado o mais rápido possível. Mas há momentos em que deixar o seu código “dormir” por um tempo é realmente do seu melhor interesse.

Neste tutorial, você aprenderá como adicionar chamadas sleep() ao seu código Python usando:

  • time.sleep()
  • Decoradores
  • Threads
  • Async IO
  • Interfaces Gráficas de Usuário

Este artigo é destinado a desenvolvedores intermediários que desejam expandir seus conhecimentos em Python. Se você se encaixa nesse perfil, então vamos começar!

Adicionando uma Chamada Python sleep() com time.sleep()

O Python possui suporte integrado para fazer o seu programa esperar por um tempo. O módulo time possui a função sleep() que você pode usar para suspender a execução da thread chamadora pelo número de segundos que você especificar.

Aqui está um exemplo de como usar time.sleep():

import time
time.sleep(3) # Dorme por 3 segundos

Se você executar esse código no seu console, você deve experimentar um atraso antes de poder inserir um novo comando no REPL.

Observação: No Python 3.5, os desenvolvedores principais do Python mudaram ligeiramente o comportamento do time.sleep(). A nova chamada de sistema sleep() em Python durará pelo menos o número de segundos que você especificou, mesmo se o sono for interrompido por um sinal. No entanto, isso não se aplica se o próprio sinal gerar uma exceção.

Você pode testar quanto tempo o atraso dura usando o módulo timeit do Python:

$ python3 -m timeit -n 3 "import time; time.sleep(3)"
3 loops, best of 5: 3 sec per loop

Aqui, você executa o módulo timeit com o parâmetro -n, que informa ao timeit quantas vezes executar a instrução que segue. Você pode ver que o timeit executou a instrução 3 vezes e que o melhor tempo de execução foi de 3 segundos, o que era esperado.

O número padrão de vezes que o timeit executará o seu código é um milhão. Se você executar o código acima com o -n padrão, então, com 3 segundos por iteração, o seu terminal ficará congelado por aproximadamente 34 dias! O módulo timeit tem várias outras opções de linha de comando que você pode conferir na documentação.

Vamos criar algo um pouco mais realista. Um administrador de sistema precisa saber quando um dos seus sites fica fora do ar. Você quer ser capaz de verificar regularmente o código de status do site, mas não quer que o seu programa verifique constantemente, pois isso pode sobrecarregar o servidor. Em vez disso, você deseja que o programa verifique o site a cada X segundos.

import time
import requests
def check_website():
# Código para verificar o status do site
print("Verificando o site...")
while True:
check_website()
time.sleep(60) # Espera por 1 minuto

Neste exemplo, a função check_website() é definida para verificar o status do site. Em seguida, usamos um loop while True para chamar essa função e em seguida aguardar por um minuto usando time.sleep(60). Dessa forma, o programa verificará o site a cada minuto e imprimirá a mensagem “Verificando o site…“.

A função check_website() pode fazer verificações mais avançadas, como usar a biblioteca requests para fazer uma solicitação HTTP para o site e verificar o código de status da resposta.

Conclusão

Neste artigo, você aprendeu diversas maneiras de adicionar atrasos de tempo ao seu código Python usando a função sleep(). Você viu como usar time.sleep() para pausar a execução do programa por um determinado número de segundos, como adicionar atrasos de tempo usando decorators, threads, Async IO e interfaces gráficas de usuário.

Adicionar atrasos de tempo ao seu código pode ser útil para simular esperas, atrasos de download ou upload de arquivos, chamadas de API, consultas a bancos de dados e muito mais. É importante entender como e quando adicionar atrasos de tempo ao seu código para evitar problemas de desempenho e melhorar a usabilidade do seu programa.

Esperamos que este tutorial tenha sido útil e que você possa aplicar esse conhecimento em seus projetos futuros!