Как прочитать выходные данные из подпроцесса, но не заблокироваться для новых строк

#python #subprocess

#python #подпроцесс

Вопрос:

У меня есть подпроцесс внутри моего кода на python, и я хочу общаться с ним по требованию. подпроцесс не завершится при вызове и останется открытым. итак, я хочу вызвать функцию и прочитать стандартные строки из подпроцесса до этого момента, другими словами, я не хочу, чтобы программа ждала новых входных данных. это мой код:

 print("Starting Stockfish Engine...")
engine = subprocess.Popen(
    'stockfish',
    universal_newlines=True,
    stdin=subprocess.PIPE,
    stdout=subprocess.PIPE,
    bufsize=1,
)


def send_command(command):
    print('nyou:nt'   command)
    engine.stdin.write(command   'n')


def get_result():
    line = engine.stdout.readline()
    while engine.stdout.readable():
        print(line)
        line = engine.stdout.readline()


get_result()
send_command("uci")
get_result()

 

любая помощь будет оценена. Спасибо

Комментарии:

1. Рассматривали ли вы возможность отправки EOF или эквивалента CTRL-C на стандартный ввод подпроцесса? Я не уверен, что это сработает, но я думаю, что стоит попробовать. Вы не указали, что изучали что-либо, так что я понятия не имею, пробовали ли вы это уже или нет.

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