我正在Ubuntu上用Python开发一个应用程序,我正在使用子进程在python中运行外部二进制文件.由于这些二进制文件是在运行时生成的并且可能变得流氓,因此我需要对这些二进制文件的内存占用量和运行时间保持严格的标签.有没有我可以在运行时限制或监视这些二进制程序的内存使用情况?为了这个目的,我真的很讨厌在子进程中使用类似"ps"的东西.
有了子进程的PID号,您可以从proc文件系统中读取所有信息。使用:
/ proc / [PID] / smaps(从Linux 2.6.14开始)此文件显示每个进程映射的内存消耗。对于每个映射,都有以下几行:
要么
/ proc / [PID] / statm提供有关内存使用情况的信息,以页为单位。
或者,您可以限制子流程可以获取的资源:
subprocess.Popen('ulimit -v 1024; ls', shell=True)
Run Code Online (Sandbox Code Playgroud)
当达到给定的虚拟内存限制时,进程将失败,并显示内存不足。