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