Я начинаю питон и ubuntu. Я пытаюсь запустить два сценария python одновременно в терминале, моя команда в терминале: python one.py|python three.py
one.py печатает четыре массива переменных на терминале
[! f3] читает значения из терминала и сохраняет значения в другом массиве.
Я считаю, что этот процесс в терминале ubuntu называется pipelining.
Проблема, с которой я столкнулась, - это python script three.py ждет, пока скрипт python one.py завершит выполнение. Я хочу, чтобы это происходило в реальном времени, когда one.py имеет выход, three.py должен читать и сохранять это значение в реальном времени.
вывод one.py
код: три.py
Ваша реализация three.py неверна.
Путем записи
temp = sys.stdin.readlines()
Вы говорите Python для чтения всех строк со стандартного ввода и сохраняете его как список в своем temp. Очевидно, что этот вызов блокируется до тех пор, пока вход не будет исчерпан, что происходит только тогда, когда one.py завершен и завершается, закрывая конвейер. Только после этого вы начнете обработку ввода.
Вместо этого вы должны читать стандартный ввод строки за строкой в цикле, например:
#!/usr/bin/env python3
import sys
for line in sys.stdin:
print(line)
Ваша реализация three.py неверна.
Путем записи
temp = sys.stdin.readlines()
Вы говорите Python для чтения всех строк со стандартного ввода и сохраняете его как список в своем temp. Очевидно, что этот вызов блокируется до тех пор, пока вход не будет исчерпан, что происходит только тогда, когда one.py завершен и завершается, закрывая конвейер. Только после этого вы начнете обработку ввода.
Вместо этого вы должны читать стандартный ввод строки за строкой в цикле, например:
#!/usr/bin/env python3
import sys
for line in sys.stdin:
print(line)