Sobes.tech
Middle

O que é um gerenciador de contexto?

sobes.tech IA

Resposta da IA

O gestor de contexto em Python é um objeto que define o contexto de execução, gerindo a alocação e libertação de recursos. Implementa o protocolo do gestor de contexto, que inclui os métodos mágicos __enter__ e __exit__.

  • __enter__: É chamado ao entrar no contexto, geralmente retornando o recurso a gerir.
  • __exit__: É chamado ao sair do contexto, mesmo que tenha ocorrido uma exceção. É responsável por libertar o recurso. Recebe três argumentos: o tipo de exceção, o objeto de exceção e o rastreio da pilha (ou None se não houve exceção).

Frequentemente usado com a instrução with para gerir automaticamente recursos como ficheiros, ligações de rede ou bloqueios.

# Exemplo de uso do gestor de contexto para trabalhar com um ficheiro
with open('myfile.txt', 'r') as f:
    content = f.read()
# O ficheiro fecha-se automaticamente após sair do bloco with

Os gestores de contexto podem ser criados implementando o protocolo ou usando o decorador @contextmanager do módulo contextlib.

# Exemplo de criação de um gestor de contexto usando o decorador
def timer():
    import time
    start_time = time.time()
    yield  # Ponto de entrada no contexto
    end_time = time.time()
    print(f"Tempo de execução: {end_time - start_time:.2f} segundos")

# Uso do gestor de contexto criado
with timer():
    # Código a medir
    import time
    time.sleep(1)