Python подпроцесс readlines () зависает

Задача, которую я пытаюсь выполнить, - это потоковая передача файла ruby и распечатка вывода. (НОТА: Я нене хочу распечатывать все сразу)

main.py

from subprocess import Popen, PIPE, STDOUT

import pty
import os

file_path = '/Users/luciano/Desktop/ruby_sleep.rb'

command = ' '.join(["ruby", file_path])

master, slave = pty.openpty()
proc = Popen(command, bufsize=0, shell=True, stdout=slave, stderr=slave, close_fds=True)     
stdout = os.fdopen(master, 'r', 0)

while proc.poll() is None:
    data = stdout.readline()
    if data != "":
        print(data)
    else:
        break

print("This is never reached!")

ruby_sleep.rb

puts "hello"

sleep 2

puts "goodbye!"

проблема

Потоковый файл работает нормально. Вывод hello / goodbye печатается с задержкой в 2 секунды. Точно так же, как скрипт должен работать. Проблема в том, что readline () зависает в конце и никогда не завершается. Я никогда не доходил до последнего отпечатка.

Я знаю, что здесь много таких вопросов, как переполнение стека, но ни один из них не помог мне решить проблему. Я'Я не думаю, что это касается всего подпроцесса, поэтому, пожалуйста, дайте мне более практический / конкретный ответ.

С уважением

редактировать

Исправьте непреднамеренный код. (ничего общего с фактической ошибкой)

Ответы на вопрос(4)

Ваш ответ на вопрос