C# Python Межпроцессорное взаимодействие

Имеется нейронная сеть распознавания изображений реализованная на Python. Стоит задача передачи изображения в формате BMP от приложения на C# в скрипт.

ProcessStartInfo processStartInfo = new ProcessStartInfo();
processStartInfo.FileName = "python.exe";
processStartInfo.Arguments = scriptPath;
processStartInfo.RedirectStandardInput = true;
processStartInfo.UseShellExecute = false;
processStartInfo.RedirectStandardOutput = true;
processStartInfo.RedirectStandardError = true;

Process process = new Process();
process.StartInfo = processStartInfo;
process.Start();

StreamWriter inputStream = process.StandardInput;
StreamReader outputStream = process.StandardOutput;

inputStream.AutoFlush = true;
inputStream.BaseStream.Write(imageBytes, 0, imageBytes.Length);
//inputStream.Close();

while (true) {
    char[] buffer = new char[100];
    int readed = outputStream.Read(buffer, 0, buffer.Length);
    if (readed == 0) break;
    Console.WriteLine("Readed: " + string.Join("", buffer.Take(readed)));
}

Console.WriteLine("Press any key for exit...");
Console.ReadKey();

Скрипт:

import sys
import numpy

buff = sys.stdin.buffer.read(100)
img = numpy.frombuffer(buff, dtype='uint8')
sys.stdout.write(str(img))
sys.stdout.flush()

Странность в том, что запись в стандартный поток ввода Python происходит только в момент когда он закрывается (строчка закомментирована для демонстрации ошибки). Предполагается что нейронной сети последовательно будут отправляться изображения на распознавание через стандартный поток ввода и ответ будет читаться из стандартного потока вывода. Как можно исправить данное поведение либо реализовать межпроцессорное взаимодействие иным образом?

Python 3.11.2


Ответы (0 шт):