Как прервать ожидание sys.stdin в python3?

Я запускаю скрипт с двумя потоками, поток чтения из подпроцесса и основной поток.

внутри основного потока я читаю stdin, вот так:

for line in sys.stdin:

    if proc.poll() != None:
        break

    proc.stdin.write(line)
    proc.stdin.flush()

    <other things happen here>

( proc это внешний подпроцесс)

Теперь это работает хорошо, пока я не захочу закрыть свою программу. Когда процесс в другом потоке завершается, я хочу остановить всю программу, но основной поток все еще ожидает ввода чего-либо stdin, Как я могу прервать это?

В основном я хочу stdin сигнализировать EOF, но я понятия не имею, как это сделать.

1 ответ

Я бы поменял темы. Читай из подпроцесса в главном потоке и делай блокировки sys.stdin вещи в другой теме. Таким образом, вы можете пройти daemon=True в threading.Thread который заставляет поток выходить, когда основной поток выходит.

Другие вопросы по тегам