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)