"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como transmitir a saída do processo em tempo real em Python?

Como transmitir a saída do processo em tempo real em Python?

Publicado em 17/11/2024
Navegar:719

How to Stream Process Output in Real-Time in Python?

Exibição contínua de saída durante a execução do processo

Em scripts Python, geralmente utilizamos subprocessos para executar programas externos. Embora esse seja um recurso poderoso, pode ser frustrante esperar a conclusão de um processo antes de recuperar sua saída. Para resolver isso, vamos explorar um método para transmitir continuamente a saída do processo enquanto ele está em execução.

Tradicionalmente, usamos subprocess.communicate() para capturar toda a saída de um processo quando ele for concluído. No entanto, esta abordagem requer que o processo seja totalmente concluído antes que qualquer saída possa ser exibida.

Para habilitar a saída contínua, podemos aproveitar a função iter em conjunto com fd.readline(). Isso nos permite iterar sobre o fluxo padrão do processo, capturando linhas à medida que ficam disponíveis:

import subprocess

def execute(cmd):
    popen = subprocess.Popen(cmd, stdout=subprocess.PIPE, universal_newlines=True)
    for stdout_line in iter(popen.stdout.readline, ""):
        yield stdout_line 
    popen.stdout.close()
    return_code = popen.wait()
    if return_code:
        raise subprocess.CalledProcessError(return_code, cmd)

Nesta versão aprimorada, produzimos cada linha de stdout à medida que ela se torna disponível. Isso permite que o script exiba a saída continuamente conforme ela é gerada pelo processo.

Aqui está um exemplo ilustrativo:

for path in execute(["locate", "a"]):
    print(path, end="")

Usando esta abordagem, podemos exibir continuamente os caminhos que correspondem à consulta de pesquisa "a" à medida que são encontrados pelo comando "locate", fornecendo feedback em tempo real sobre o andamento do processo.

Essa técnica permite o monitoramento contínuo da saída, melhorando a interatividade e a experiência do usuário de scripts que iniciam processos externos.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3