Задать вопрос
@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 почему-то все работает нормально..
  • Вопрос задан
  • 245 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
Viji
@Viji
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()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
от 200 000 до 300 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽
02 февр. 2025, в 19:02
50000 руб./за проект
02 февр. 2025, в 18:10
3000 руб./за проект
02 февр. 2025, в 17:00
350 руб./в час