首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过Process.Start()启动的进程限制为2 of内存

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

Stack Overflow用户
提问于 2020-11-18 19:06:41
回答 1查看 81关注 0票数 2

我有一个asp.net后端应用程序,需要触发一个大型的python脚本通过命令行界面与StartProcessInfo()

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

代码语言:javascript
复制
public void Func(args){
        
    ProcessStartInfo psi = new ProcessStartInfo(); 

    psi.FileName = @"C:\path\to\python.exe";
    string script = @"script.py";
    psi.WorkingDirectory = @"C:\path\to\dir";

    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-4 GB的ram,然后迅速下降到2.1-2.4 GB的ram,并冻结,即使我有8 GB的空闲内存。

当我手动启动该脚本时,它在使用5.5 GB内存的情况下运行得非常好。

有没有一种方法可以触发带有参数的python脚本,而不将其内存限制在2 GB?

我正在win10x64上使用.net x64版本4.7.2,如果它有帮助的话。

编辑:这个问题可能会被认为是重复的,因为已经有其他关于C#应用程序限制的问题。但是,这个问题的重点是执行其他应用程序(python.exe),并避免继承原始ASP.NET应用程序和其他python.exe应用程序之间的这些限制。此场景未在链接重复问题中提及,并且可能有不同的解决方案/答案。

EN

回答 1

Stack Overflow用户

发布于 2020-11-19 18:42:24

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64891847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档