Passar para o conteúdo principal

Formatos de Tempo

Time Formats in Python

O módulo time do Python é uma ferramenta poderosa para trabalhar com operações relacionadas ao tempo em Python. Ele fornece funções para medir intervalos de tempo, formatação e análise de strings de data e hora, e manipulação de zonas de tempo. Com o módulo time, você pode facilmente trabalhar com valores de data e hora, e realizar uma ampla gama de operações relacionadas ao tempo em seu código Python. Se você precisa medir o tempo de execução do seu código ou trabalhar com valores de data e hora, o módulo time do Python te oferece cobertura.

Formatos de Tempo em Python

No Python, você pode usar o método strftime() do módulo time para formatar valores de tempo de acordo com vários códigos de formato. Aqui estão alguns códigos de formato comumente usados para formatação de tempo em Python:

  • %H: Hora de 2 dígitos no formato de 24 horas (00-23)
  • %I: Hora de 2 dígitos no formato de 12 horas (01-12)
  • %M: Minuto de 2 dígitos (00-59)
  • %S: Segundo de 2 dígitos (00-59)
  • %p: Designação AM/PM (AM ou PM)

Você pode combinar esses códigos de formato com outros caracteres para criar o formato de tempo desejado. Aqui está um exemplo de como obter o tempo formatado em Python:

import time

# Get the current time
current_time = time.localtime()

# Format the time using strftime()
formatted_time = time.strftime("%H:%M:%S", current_time)
formatted_time_am_pm = time.strftime("%I:%M:%S %p", current_time)

# Print the formatted time
print("Formatted Time (24-hour format):", formatted_time)
print("Formatted Time (12-hour format):", formatted_time_am_pm)

# Output:
# Formatted Time (24-hour format): 12:34:56
# Formatted Time (12-hour format): 12:34:56 PM

Função time.sleep() do Python

A time.sleep() é uma função do Python que suspende a execução do thread atual por um número especificado de segundos, assim você pode facilmente definir seu próprio tempo de espera.

A sintaxe de time.sleep() para tempo de espera ou atraso é a seguinte:

import time

time.sleep(seconds)

Onde seconds é o número de segundos pelos quais a thread deve ser suspensa.

A função sleep() aceita a duração do sono em segundos, não em milissegundos. No entanto, você pode alcançar um efeito semelhante dividindo o tempo desejado de duração do sono em milissegundos por 1000 para converter para segundos.

Usar a função time.sleep() ajudará você a pausar a execução do programa pelo período de tempo definido.

Função time.time() em Python

Em Python, time.time() é uma função que retorna o horário atual em segundos desde a época (1 de janeiro de 1970, 00:00:00 UTC) como um número de ponto flutuante.

Aqui está um exemplo de como usar a função time.time() para medir o tempo em Python:

import time

start_time = time.time()

# do some time-consuming task here

end_time = time.time()

elapsed_time = end_time - start_time

print(f"The task took {elapsed_time:.2f} seconds to complete.")

Neste exemplo, start_time e end_time são obtidos chamando time.time() no início e no fim da tarefa que consome tempo, respectivamente. A diferença entre os dois tempos dá o tempo decorrido, que é então impresso. O tempo de execução calculado é formatado como uma string com duas casas decimais usando f-strings.

Aqui está também um exemplo de cálculo de tempo para criação de grafos em Python usando a biblioteca networkx:

import networkx as nx
import time

start_time = time.time()

# Create a graph with 100 nodes
G = nx.complete_graph(100)

end_time = time.time()

# Compute the time taken to create the graph
time_taken = end_time - start_time

print(f"Time taken to create the graph: {time_taken:.4f} seconds")

Portanto, a função time.time() pode ser usada para contar tempo em Python.

Medindo Tempo em Ms

Se você deseja medir o tempo em milissegundos em Python, você pode usar a função time() do módulo time juntamente com a função perf_counter(). Aqui está um exemplo:

import time

# Get the current time in milliseconds
current_time_ms = int(time.time() * 1000)
print("Current Time in Milliseconds:", current_time_ms)

# Measure the execution time of a code block in milliseconds
start_time = time.perf_counter()

# Code or operation to measure

end_time = time.perf_counter()
execution_time_ms = int((end_time - start_time) * 1000)
print("Execution Time in Milliseconds:", execution_time_ms)

Saída:

Current Time in Milliseconds: 1621842353154
Execution Time in Milliseconds: 42

Neste exemplo, time.time() é usado para recuperar o tempo atual como um número de ponto flutuante representando o número de segundos desde a época. Ao multiplicá-lo por 1000, obtemos o tempo atual em milissegundos.

Para medir o tempo de execução de um bloco de código, usamos time.perf_counter() para obter o tempo de alta resolução atual em segundos. Capturamos o tempo de início antes do bloco de código e o tempo de término após o bloco de código. Subtraindo o tempo de início do tempo de término, obtemos o tempo decorrido em segundos. Multiplicando-o por 1000 nos dá o tempo de execução em milissegundos.

Python timeit() com Exemplos

O módulo timeit do Python é uma ferramenta poderosa para medir o tempo de execução de pequenos trechos de código. Ele oferece uma maneira simples de cronometrar a execução do código e comparar o desempenho de diferentes abordagens. O módulo timeit pode ser particularmente útil quando você quer comparar diferentes implementações e determinar qual delas é mais eficiente.

Parâmetros do Python timeit()

A função timeit em Python aceita vários parâmetros que permitem personalizar seu comportamento:

  • stmt: Essa é a declaração que você deseja medir. Pode ser uma string contendo uma única declaração ou múltiplas declarações separadas por ponto e vírgula.
  • setup: Este parâmetro é opcional e é usado para configurar o ambiente para o código a ser medido. Também pode ser uma string contendo uma ou mais declarações.
  • timer: Este parâmetro especifica a função de temporização a ser usada. Se não especificado, o temporizador padrão para a plataforma atual será utilizado.
  • number: Esse parâmetro determina o número de execuções do código. Quanto mais execuções, mais precisa será a medida de tempo.

Cronometrando Múltiplas Linhas em Código Python

Você pode usar o módulo timeit para cronometrar múltiplas linhas de código Python. Aqui estão dois exemplos usando abordagens diferentes.

Exemplo 1: Usando ponto e vírgula

import timeit

code_to_measure = """
def square_numbers():
    result = []
    for i in range(1000):
        result.append(i ** 2)
    return result

square_numbers()
"""

execution_time = timeit.timeit(stmt=code_to_measure, number=10000)
print(f"Execution time: {execution_time} seconds")

Exemplo 2: Usando Aspas Triplas

import timeit

code_to_measure = '''
def square_numbers():
    result = []
    for i in range(1000):
        result.append(i ** 2)
    return result

square_numbers()
'''

execution_time = timeit.timeit(stmt=code_to_measure, number=10000)
print(f"Execution time: {execution_time} seconds")

Em ambos os exemplos, definimos uma função (square_numbers) e então a chamamos usando o módulo timeit. O código a ser medido é envolvido em aspas triplas, permitindo-nos abranger múltiplas linhas.

Métodos timeit()

O módulo timeit fornece diferentes métodos para medir o tempo de execução. Aqui estão alguns deles.

timeit.timeit()

O método timeit.timeit() é usado para medir o tempo de execução de um trecho de código. Ele recebe o código como uma string, o número de execuções e uma instrução de configuração opcional.

import timeit

code_to_measure = "result = [i**2 for i in range(1000)]"

execution_time = timeit.timeit(stmt=code_to_measure, number=10000)
print(f"Execution time: {execution_time} seconds")

timeit.repeat()

O método timeit.repeat() permite que você repita a medição diversas vezes e retorna uma lista dos tempos de execução.

import timeit

code_to_measure = "result = [i**2 for i in range(1000)]"

execution_times = timeit.repeat(stmt=code_to_measure, number=10000, repeat=5)
print(f"Execution times: {execution_times}")

Neste exemplo, o código é executado 10.000 vezes, e a medição é repetida 5 vezes.

timeit.default_timer()

O método timeit.default_timer() retorna o tempo atual de acordo com o relógio de maior resolução disponível na plataforma.

import timeit

start_time = timeit.default_timer()

# Code to be measured
result = [i**2 for i in range(1000)]

end_time = timeit.default_timer()

execution_time = end_time - start_time
print(f"Execution time: {execution_time} seconds")

Utilizando os métodos timeit, você pode escolher aquele que melhor se adapta às suas necessidades de medição e comparar facilmente o desempenho de diferentes implementações de código.

Obtendo Tempo em Milissegundos

Para obter o tempo atual em milissegundos usando Python, você pode usar o módulo time e sua função time(), que retorna o número de segundos desde a Época (1 de Janeiro de 1970, 00:00:00 UTC). Você pode então multiplicar esse valor por 1000 para obter o tempo em milissegundos:

import time

milliseconds = int(round(time.time() * 1000))
print(milliseconds)

Isso imprimirá o horário atual em milissegundos. Observe que o resultado é arredondado para um inteiro usando a função round() antes de convertê-lo em um inteiro usando int(). Isso porque time.time() retorna um valor de ponto flutuante com alta precisão.

Um Timer em Python

Para criar um timer em Python, você pode usar o módulo time incorporado. Aqui está um exemplo de trecho de código que demonstra como criar um timer:

import time

def countdown(t):
    while t:
        mins, secs = divmod(t, 60)
        timer = '{:02d}:{:02d}'.format(mins, secs)
        print(timer, end="\r")
        time.sleep(1)
        t -= 1
    print('Timer completed!')

# Set the time for the timer (in seconds)
t = 60

# Call the countdown function with the time value as the argument
countdown(t)

Este código criará um temporizador regressivo de 60 segundos e imprimirá o tempo restante na tela a cada segundo até que o temporizador seja concluído. Você pode ajustar o valor de t para definir a duração desejada do temporizador.

Utilizando essa funcionalidade, você pode criar uma função de temporizador para medir o tempo decorrido.

Funções de Tempo em Python

Em Python, o módulo time fornece uma gama de funções para trabalhar com tempo. Aqui estão algumas funções comumente usadas (à parte de time() e sleep(), que já mencionamos):

  • ctime() - Essa função recebe um tempo em segundos e retorna uma representação em string desse tempo no formato "Dia Mês Data Hora Ano". Exemplo de uso:
import time

current_time = time.time()
time_string = time.ctime(current_time)
print("Current time: ", time_string)
  • gmtime() - Esta função recebe um tempo em segundos e retorna um objeto struct_time representando o horário UTC. Exemplo de uso:
import time

current_time = time.time()
utc_time = time.gmtime(current_time)
print("UTC time: ", utc_time)

Existem muitas mais funções disponíveis no módulo time do Python para trabalhar com o tempo, incluindo localtime(), strftime() e strptime().

A Função perf_counter() do Módulo Time

No Python, a função perf_counter() do módulo time é usada para medir o tempo decorrido com a maior resolução disponível no sistema. Ela oferece um cronômetro mais preciso em comparação com a função time() regular. Aqui está um exemplo de como usar o perf_counter():

import time

start_time = time.perf_counter()

# Code to be measured
for i in range(1000):
    # Perform some computation
    result = i ** 2

end_time = time.perf_counter()

execution_time = end_time - start_time
print(f"Execution time: {execution_time} seconds")

Ao usar perf_counter(), você pode medir o tempo de execução de um bloco específico de código com alta precisão. Essa função é comumente usada para perfilamento de desempenho e fins de benchmarking.

A Função monotonic() do Módulo Time

Em Python, a função monotonic() do módulo time é usada para obter um relógio monotônico, que é um relógio que aumenta continuamente e não é afetado por ajustes de tempo do sistema. É adequado para medir intervalos e determinar o tempo decorrido entre eventos. Aqui está um exemplo de como usar monotonic():

import time

start_time = time.monotonic()

# Code to be measured
for i in range(1000):
    # Perform some computation
    result = i ** 2

end_time = time.monotonic()

elapsed_time = end_time - start_time
print(f"Elapsed time: {elapsed_time} seconds")

Usar monotonic() garante que o tempo decorrido seja calculado com base em um relógio monotônico, não afetado por alterações no horário do sistema, como ajustes de relógio ou mudanças de fuso horário. Ele fornece uma medida confiável de tempo decorrido para medições de desempenho e fins de benchmarking.

Como Parar a Execução de um Programa Após um Determinado Período de Tempo

Se você deseja parar a execução de um programa Python após um determinado período de tempo, você pode usar o módulo signal juntamente com um temporizador. O módulo signal permite que você lide com vários sinais, incluindo um sinal de temporizador, para controlar o comportamento do programa. Aqui está um exemplo que demonstra como parar o programa após uma duração especificada:

import signal
import time

# Define the handler function for the alarm signal
def timeout_handler(signum, frame):
    raise TimeoutError("Program execution timed out")

# Set the duration (in seconds) after which the program should be stopped
duration = 10

# Register the handler function to be called when the alarm signal is received
signal.signal(signal.SIGALRM, timeout_handler)

# Set the alarm to trigger after the specified duration
signal.alarm(duration)

try:
    # Code to be executed
    while True:
        # Perform some computation
        time.sleep(1)  # Simulate some work

except TimeoutError:
    print("Program execution stopped after the specified duration")

Neste exemplo, o programa define um alarme usando signal.alarm(duration), onde duração é a duração desejada em segundos. Quando o alarme é acionado após a duração especificada, ele gera uma exceção TimeoutError, que é capturada pelo bloco try-except. No bloco except, você pode tratar a terminação do programa ou imprimir uma mensagem para indicar que o programa foi interrompido.

Nota: o módulo signal não está disponível em todas as plataformas, e seu comportamento pode variar. Adicionalmente, esse método pode não ser adequado para interromper tarefas de longa duração ou intensivas em cálculo. Para cenários mais complexos, você pode precisar considerar técnicas de multiprocessing ou threading para alcançar o comportamento desejado.

Como Medir um Tempo de Execução de uma Função em Python

Para medir o tempo de execução de uma função específica em Python, você pode usar o módulo time e um decorador. Aqui está um exemplo de como você pode medir o tempo de uma função usando um decorador:

import time

def timer_decorator(func):
    def wrapper(*args, **kwargs):
        start_time = time.time()
        result = func(*args, **kwargs)
        end_time = time.time()
        elapsed_time = end_time - start_time
        print("Elapsed Time: {:.6f} seconds".format(elapsed_time))
        return result
    return wrapper

# Example function to be timed
@timer_decorator
def my_function():
    time.sleep(2)  # Simulating some time-consuming operation
    return "Finished"

# Call the function
my_function() # Output: Elapsed Time: 2.001987 seconds

Neste exemplo, a função timer_decorator é um decorador que envolve a função alvo (my_function) com funcionalidade de cronometragem. O decorador registra o horário de início antes de invocar a função e o horário de término após a conclusão da função. Ele calcula o tempo decorrido e o imprime.

Ao aplicar o decorador @timer_decorator à my_function, a função é automaticamente cronometrada quando chamada.

Você pode usar esse decorador em qualquer função que deseja cronometrar aplicando o decorador @timer_decorator acima da definição da função.

Nota: O exemplo utiliza a chamada da função time.sleep(2) para simular uma operação demorada. Substitua-a pelo código real ou operação que deseja cronometrar.

Como Obter o Horário Atual

Se você quer saber que horas são agora, pode usar a função time() do módulo time. Aqui está um exemplo de como obter o horário atual em Python:

import time

current_time = time.time()
print("Current Time (in seconds since the epoch):", current_time)

Neste exemplo, time.time() retorna o tempo atual como um número de ponto flutuante representando o número de segundos desde a época. Dessa forma, podemos obter o tempo Unix atual em Python.

A Função time.strftime()

A função strftime() no módulo time do Python é usada para formatar um objeto time.struct_time ou uma tupla de tempo em uma representação de string baseada nos códigos de formato especificados. Aqui está um exemplo:

import time

# Get the current time as a time tuple
current_time = time.localtime()

# Format the time using strftime()
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", current_time)

# Print the formatted time
print("Formatted Time:", formatted_time) # Output: Formatted Time: 2023-05-22 12:34:56

Imprimindo a Hora em Python

Para imprimir a hora atual em Python, você pode usar o módulo time ou o módulo datetime. Aqui está um exemplo de uso do módulo time:

import time

current_time = time.localtime()
formatted_time = time.strftime("%H:%M:%S", current_time)

print("Current Time (using time module):", formatted_time)

Como Obter a Hora Atual

Para recuperar a hora atual em Python, você pode usar o módulo time ou o módulo datetime. Aqui está como você pode obter a hora atual usando o módulo time:

import time

current_time = time.localtime()
print("Current Time (using time module):", time.strftime("%H:%M:%S", current_time))

Aqui está também um exemplo de como obter o horário atual em milissegundos:

import time

current_time_ms = int(time.time() * 1000)
print("Current Time (in milliseconds using time module):", current_time_ms)

Gerando um Timestamp em Python

Você pode usar o módulo time para gerar um timestamp. Aqui está um exemplo:

import time

timestamp = int(time.time())
print("Timestamp (using time module):", timestamp)

Contribua connosco!

Não hesite em contribuir para os tutoriais Python no GitHub: crie uma bifurcação, actualize o conteúdo e emita um pedido de retirada.

Profile picture for user almargit
Python developer, content manager.
Profile picture for user AliaksandrSumich
Atualizado: 2024-05-03 22:51
Profile picture for user angarsky
Revisto e aprovado