我有一个 python 脚本(假设它是一个文件),有 3 个部分:
(1)加载外部库
(2) 加载大文件的内容
(3)算法
第 (3) 部分需要 100 毫秒,而第 (1) 和 (2) 部分则需要 10 秒。
我有一个执行上面 Python 脚本的 C# 程序:
Process process = new Process();
process.StartInfo = new ProcessStartInfo(pythonPath, fileNameWithArg)
{
RedirectStandardOutput = true,
CreateNoWindow = true,
UseShellExecute = false,
RedirectStandardError = true
};
process.Start();
string result = process.StandardOutput.ReadToEnd();
我正在传递一些参数并等待 Python 脚本的响应,如上面所示。
如何才能更好地实现我的 Python 脚本的 (1) 和 (2) 部分,而不必在每次后续调用时加载?我只对实际算法(第 3 节)感兴趣,因为第(1)和(2)节是不变的。因此,我不想再等待 10 秒来完成第 (1) 和 (2) 部分,而是更愿意调用我的 Python 脚本并在 100 毫秒后收到响应。我很高兴第一次调用 python 脚本需要 10 秒+,但每次连续调用只需要 100 毫秒。
您可以使Python脚本持久运行,运行(1)一次,并将(2)保留在进程内存中。
然后就可以使用标准输入等进程间通信的方式在Python进程和.NET进程之间进行通信。