@PesyCorm

Почему p.stdout (subprocess) не возвращает вывода до завершения выполнения?

Я не совсем понимаю, почему этот код не работает так как ожидалось:
import subprocess

p = subprocess.Popen(["python3", "file2.py"], stdout=subprocess.PIPE, bufsize=1, text=True)
with p.stdout:
    for line in p.stdout:
        print(line)
p.wait()

file2.py просто итерируется range и выводится в print()
Проблема в том, что я не могу получать вывод подпроцесса во время его исполнения - итерация p.stdout просто зависает пока не будет закончено выполнение подпроцесса.
Это происходит, если запускать код через терминал: python3 file.py. В PyCharm почему-то все работает нормально..
  • Вопрос задан
  • 189 просмотров
Решения вопроса 1
Viji
@Viji
Associate DevOps Engineer
попробуй таким макаром

import subprocess

p = subprocess.Popen(["python3", "file2.py"], stdout=subprocess.PIPE, bufsize=1, text=True, start_new_session=True)
with p.stdout:
    for line in p.stdout:
        print(line)
p.wait()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы