通过Process.Start()启动的进程的内存限制为2GB



我有一个asp.net后端应用程序,它需要通过带有StartProcessInfo()的CLI触发一个大型python脚本。

使用Process.Start():启动带有参数的python的代码

public void Func(args){

ProcessStartInfo psi = new ProcessStartInfo(); 
psi.FileName = @"C:pathtopython.exe";
string script = @"script.py";
psi.WorkingDirectory = @"C:pathtodir";
psi.Arguments = $"{script} {args}";
psi.UseShellExecute = false;
psi.CreateNoWindow = true;
psi.RedirectStandardOutput = true;
psi.RedirectStandardError = true;
string errors = string.Empty;
string results = string.Empty;
Debug.WriteLine(psi.Arguments);
using (Process process = Process.Start(psi))
{
results = process.StandardOutput.ReadToEnd();
errors = process.StandardError.ReadToEnd();
process.WaitForExit();
process.Close();
}
Debug.WriteLine(results);
Debug.WriteLine(errors);
}

我的问题是,当脚本由Process.Start()运行时,它的内存使用量会上升到3-4GB的ram,然后迅速下降到2.1-2.4GB的ram并冻结,即使我有8GB的可用内存。

当我手动启动脚本时,它运行得非常好,使用了5.5GB的ram。

有没有一种方法可以在不将内存限制在2GB的情况下用参数触发python脚本?

我在win10x64上使用.netx64版本4.7.2,如果有帮助的话。


EDIT:这个问题可能被认为是重复的,因为已经有其他关于C#应用程序限制的问题了。但是,这个问题的重点是执行其他应用程序(python.exe(,并避免在原始ASP.NET应用程序和其他python.exe应用程序之间继承这些限制。链接的重复问题中没有提到这种情况,可能有不同的解决方案/答案。

我们通过在C#上附加一个脚本来解决这个问题,该脚本充当ASP.NET和分离进程之间的接口(高内存使用率(。因此,绕过内存限制,或者更确切地说,绕过整个ASP.NET.

最新更新