我正在Ubuntu上用Python开发一个应用程序,并使用subprocess在Python中运行外部二进制文件。由于这些二进制文件是在运行时生成的,可能会失控,因此我需要严格控制这些二进制文件的内存占用和运行时间。是否有一种方式可以在运行时限制或监控这些二进制程序的内存使用情况?我不想使用"ps"之类的subprocess来达到此目的。
我正在Ubuntu上用Python开发一个应用程序,并使用subprocess在Python中运行外部二进制文件。由于这些二进制文件是在运行时生成的,可能会失控,因此我需要严格控制这些二进制文件的内存占用和运行时间。是否有一种方式可以在运行时限制或监控这些二进制程序的内存使用情况?我不想使用"ps"之类的subprocess来达到此目的。
如果您的子进程有PID号码,您可以从proc文件系统中读取所有信息。使用:
/proc/[PID]/smaps(自Linux 2.6.14起) 此文件显示每个进程映射的内存消耗。对于每个映射,都会有一系列行,如下所示:
或者
/proc/[PID]/statm 提供有关内存使用情况的信息,以页面为单位。
或者,您可以使用以下方法限制子进程可以获取的资源:
subprocess.Popen('ulimit -v 1024; ls', shell=True)