[C# 문법] C# 에서 Process로 Python 파일 실행하기
- C#/C# 문법
- 2022. 3. 18. 20:59
참조
- https://betterprogramming.pub/running-python-script-from-c-and-working-with-the-results-843e68d230e5
- https://ernest-bonat.medium.com/using-c-to-run-python-scripts-with-machine-learning-models-a82cff74b027
목적
- C# 에서 기본으로 제공하는 Process 클래스를 통해 Python 파일을 실행하는 방법에 대해서 POC 진행합니다.
- 실제 Process로 파이썬 파일을 실행하여 정상적으로 실행되는지 테스트 진행합니다.
개발 환경
- .NET Version : .NET 6
- 개발 도구 : Visual Studio 2022
예제 코드
- C#에서 Python 파일을 Process 로 시작하려면 먼저 Python 설치 경로 를 알아야 합니다.
- 다음으로, Arguments에 실제 실행시킬 파이썬 파일이 위치해 있는 경로를 넣어 줍니다.
- 그외 조건은 필요에 따라서 달라질 수 있습니다.
using System.Diagnostics;
Start();
void Start()
{
var path = @"C:\\src\\unit_test\\tf_serving\\gRPC";
var pythonFileName = "tensorflow_serving_gRPC.py";
run_cmd(path, pythonFileName);
}
void run_cmd(string path, string pythonFile)
{
var psi = new ProcessStartInfo
{
FileName = @"C:\Users\AppData\Local\Programs\Python\Python310\python.exe", // 파이썬 설치 경로
Arguments = $"\"{path}\\{pythonFile}",
UseShellExecute = false,
CreateNoWindow = true,
RedirectStandardOutput = true,
RedirectStandardError = true
};
var erros = string.Empty;
var results = string.Empty;
using (Process process = Process.Start(psi))
{
using (StreamReader reader = process.StandardOutput)
{
while (!process.HasExited)
{
Console.WriteLine(reader.ReadLine());
}
erros = process.StandardError.ReadToEnd();
results = process.StandardOutput.ReadToEnd();
}
}
Console.WriteLine(erros);
Console.WriteLine(results);
}
실행 결과
- 실행 결과, 정상적으로 C#에서 tensorflow_serving_gRPC.py 파일을 정상적으로 실행하여 Inference 값이 C# Console에 출력되는 것을 확인할 수 있습니다.
실제 값 : 7 / 예측 값 : 7
실제 값 : 2 / 예측 값 : 2
실제 값 : 1 / 예측 값 : 1
실제 값 : 0 / 예측 값 : 0
실제 값 : 4 / 예측 값 : 4
실제 값 : 1 / 예측 값 : 1
실제 값 : 4 / 예측 값 : 4
실제 값 : 9 / 예측 값 : 9
실제 값 : 5 / 예측 값 : 5
실제 값 : 9 / 예측 값 : 9
실제 값 : 0 / 예측 값 : 0
실제 값 : 6 / 예측 값 : 6
실제 값 : 9 / 예측 값 : 9
실제 값 : 0 / 예측 값 : 0
실제 값 : 1 / 예측 값 : 1
728x90
'C# > C# 문법' 카테고리의 다른 글
[C# 문법] C# StringBuilder 성능 개선 (0) | 2022.04.28 |
---|---|
[C# 문법] .NET 콘솔 서비스 - DockerFile, Imgae, Containger 생성하기 (0) | 2022.03.18 |
[C# 문법] C# 에서 IronPython 이용하여 Python 연동 (0) | 2022.03.18 |
[C# 문법] C# .NET의 DateTime 모범 사례 (1) | 2022.02.16 |
[C# 활용] String, StringBuilder 성능 차이 (0) | 2022.02.08 |
이 글을 공유하기