检查Python中子进程的内存使用情况

2024-06-08 07:06:43 发布

您现在位置:Python中文网/ 问答频道 /正文


我在Ubuntu上用Python开发一个应用程序,并使用subprocess从Python内部运行外部二进制文件。由于这些二进制文件是在运行时生成的,并且可能会变成流氓,所以我需要严格记录这些二进制文件的内存占用量和运行时。有什么方法可以在运行时限制或监视这些二进制程序的内存使用情况吗?我真的不想在子流程中使用类似“ps”的东西。


Tags: 文件方法内存程序应用程序ubuntu记录二进制
2条回答

拥有子进程的PID号,您可以从proc file-system读取所有信息。使用:

/proc/[PID]/smaps (since Linux 2.6.14) This file shows memory consumption for each of the process's mappings. For each of mappings there is a series of lines as follows:

或者

/proc/[PID]/statm Provides information about memory usage, measured in pages.

或者,您可以限制子流程可以获取的资源:

subprocess.Popen('ulimit -v 1024; ls', shell=True)

当达到给定的虚拟内存限制时,进程将因内存不足而失败。

在生成子进程之前,可以使用Python的resource模块设置限制。

为了进行监视,resource.getrusage()将为您提供所有子进程的摘要信息;如果您想查看每个子进程的信息,可以在其他注释中执行/proc技巧(不可移植但有效),或者在每个子进程之间放置一个Python程序并找出一些通信(可移植,丑陋,稍微有效)。

相关问题 更多 >

    热门问题