私はPython環境を最初に実行するのに役立つC#コードを持っていて、それから私のpythonプロセスを実行します。しかし、問題は実行に多くの時間がかかることです。C#からpythonスクリプトを呼び出す
実際には私は値を渡し、Pythonスクリプトで1行のコードを実行したいだけです。しかし、毎回すべてのPythonコードを実行する必要があります。 Pythonのプロセスを実行する方法がありますし、私が望むときに単一行を実行します。
Iプリント(neigh.predict([VAL1、VAL2、val3は
import numpy as np
import sys
val1 = float(sys.argv[1])
val2 = float(sys.argv[2])
val3 = float(sys.argv[3])
val4 = float(sys.argv[4])
val5 = float(sys.argv[5])
val6 = float(sys.argv[6])
# Load dataset
url = "F:\FINAL YEAR PROJECT\Amila\data2.csv"
names = ['JawLower', 'BrowLower', 'BrowRaiser', 'LipCornerDepressor', 'LipRaiser','LipStretcher','Emotion_Id']
dataset = pandas.read_csv(url, names=names)
# shape
# print(dataset.shape)
# class distribution
# print(dataset.groupby('Emotion_Id').size())
# Split-out validation dataset
array = dataset.values
X = array[:,0:6]
Y = array[:,6]
neigh = KNeighborsClassifier(n_neighbors=3)
neigh.fit(X, Y)
print(neigh.predict([[val1,val2,val3,val4,val5,val6]]))
スクリプト
この
C#コード
public String Insert(float[] values)
{
// full path of python interpreter
string python = @"C:\ProgramData\Anaconda2\python.exe";
// python app to call
string myPythonApp = @"C:\classification.py";
// dummy parameters to send Python script
//int x = 2;
//int y = 5;
// Create new process start info
ProcessStartInfo myProcessStartInfo = new ProcessStartInfo(python);
// make sure we can read the output from stdout
myProcessStartInfo.UseShellExecute = false;
myProcessStartInfo.RedirectStandardOutput = true;
myProcessStartInfo.CreateNoWindow = true;
myProcessStartInfo.WindowStyle = ProcessWindowStyle.Minimized;
// start python app with 3 arguments
// 1st arguments is pointer to itself, 2nd and 3rd are actual arguments we want to send
myProcessStartInfo.Arguments = myPythonApp + " " + values[0] + " " + values[1] + " " + values[2] + " " + values[3] + " " + values[4] + " " + values[5];
Process myProcess = new Process();
// assign start information to the process
myProcess.StartInfo = myProcessStartInfo;
myProcess.Start();
// Read the standard output of the app we called.
// in order to avoid deadlock we will read output first and then wait for process terminate:
StreamReader myStreamReader = myProcess.StandardOutput;
string myString = myStreamReader.ReadLine();
/*if you need to read multiple lines, you might use:
string myString = myStreamReader.ReadToEnd() */
// wait exit signal from the app we called and then close it.
myProcess.WaitForExit();
myProcess.Close();
// write the output we got from python app
Console.WriteLine("Value received from script: " + myString);
Console.WriteLine("Value received from script: " + myString);
とPythonとC#コードとPythonのプロセスの両方を取り付け、val4、val5、val6]]))これは私が分離して実行したいコードの行です。
http://python4.net – denfromufa