我发现很多类似的问题在 python 运行时询问对象的大小。一些答案建议对子进程的内存量设置限制。我不想对子进程的内存设置限制。这就是我想要的——
我subprocess.Popen()
用来执行外部程序。我可以很好地获得标准输出和process.stdout.readlines()
过程process.stderr.readlines()
完成后的错误。
当错误的程序进入无限循环并不断产生输出时,我遇到了问题。由于subprocess.Popen()
将输出数据存储在内存中,这个无限循环很快就会耗尽整个内存并且程序变慢。
一种解决方案是我可以超时运行命令。但是程序需要不同的时间才能完成。大超时,对于花费小时间并具有无限循环的程序来说,违背了拥有它的目的。
有什么简单的方法可以让命令可以产生的数据量上限为 200MB?如果超过限制命令应该被杀死。