2024-04-26 06:32:45 发布
网友
(C)Python中是否有任何方法来检查进程的当前内存使用情况?特别是,我想在测试脚本中确定内存使用的高水位线,但如果有必要,我不介意定期检查内存使用情况并为自己计算高水位线。
编辑:我正在寻找纯python解决方案,或者是在OS X上工作的解决方案
看看我对this question的回答。它使用标准库的resource模块中的getrusage()函数,并在Mac OS X上工作
resource
getrusage()
可以使用os.getpid()获取当前的PID,然后使用该PID在调用top/free/ps等的子进程的输出中查找进程
os.getpid()
top
free
ps
我不是OSX/BSD专家,所以我不确定哪个命令将按进程为您提供内存使用
在Linux上,您可以检查/proc/self/status文件:
/proc/self/status
VmPeak: 6784 kB VmSize: 6784 kB VmLck: 0 kB VmHWM: 572 kB VmRSS: 572 kB VmData: 180 kB VmStk: 136 kB VmExe: 44 kB VmLib: 1640 kB VmPTE: 36 kB VmSwap: 0 kB
可能VmPeak是您最感兴趣的行,但是如果您mmap(2)一个千兆字节大小的文件,您可能会占到超过千兆字节,即使您只使用文件中的三到四个页面。
VmPeak
mmap(2)
如果你意识到了通过top(1)或ps(1)检查内存的局限性,那么你可能很适合去。如果您不知道检查内存使用的限制,那么一定要检查Virt、Res和Shr列在top(1)输出中的含义。:)
top(1)
ps(1)
Virt
Res
Shr
看看我对this question的回答。它使用标准库的
resource
模块中的getrusage()
函数,并在Mac OS X上工作可以使用
os.getpid()
获取当前的PID,然后使用该PID在调用top
/free
/ps
等的子进程的输出中查找进程我不是OSX/BSD专家,所以我不确定哪个命令将按进程为您提供内存使用
在Linux上,您可以检查
/proc/self/status
文件:可能
VmPeak
是您最感兴趣的行,但是如果您mmap(2)
一个千兆字节大小的文件,您可能会占到超过千兆字节,即使您只使用文件中的三到四个页面。如果你意识到了通过
top(1)
或ps(1)
检查内存的局限性,那么你可能很适合去。如果您不知道检查内存使用的限制,那么一定要检查Virt
、Res
和Shr
列在top(1)
输出中的含义。:)相关问题 更多 >
编程相关推荐