Execute dois scripts python ao mesmo tempo

3

Eu sou um iniciante em python e ubuntu. Eu estou tentando executar dois scripts python ao mesmo tempo no terminal, meu comando no terminal é:

python one.py|python three.py

one.py imprime uma matriz de quatro variáveis no terminal

three.py lê os valores do terminal e armazena os valores em outro array.

Eu acredito que este processo no terminal do ubuntu é chamado pipelining .

O problema que estou enfrentando agora é o script python three.py espera até que o script python one.py conclua sua execução. Eu quero que isso aconteça em tempo real, sempre que one.py tiver uma saída, three.py deve ler e armazenar esse valor em tempo real.

saída de one.py

code:three.py

    
por jovel 12.04.2018 / 11:46

1 resposta

3

Sua implementação de three.py está incorreta.

Escrevendo

temp = sys.stdin.readlines()

Você diz ao Python para ler todas as linhas da entrada padrão e armazená-las como lista na variável temp . É óbvio que essa chamada bloqueia até que a entrada esteja esgotada, o que acontece somente quando one.py é concluído e sai, fechando o pipeline. Só depois disso você começa a processar a entrada.

O que você pode fazer é ler a partir da linha padrão de entrada por linha em um loop, assim:

#!/usr/bin/env python3
import sys
for line in sys.stdin:
    print(line)
    
por Byte Commander 12.04.2018 / 12:47