Как прервать ожидание 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
который заставляет поток выходить, когда основной поток выходит.