如何在 python 2.7 32bit 中获取 64bit 进程的内存工作集?
Posted
技术标签:
【中文标题】如何在 python 2.7 32bit 中获取 64bit 进程的内存工作集?【英文标题】:How to get the memory working set of a 64bit process in python 2.7 32bit? 【发布时间】:2013-03-25 01:00:58 【问题描述】:对于自动化测试框架,我需要监控我启动的 64 位进程的工作集。不知何故,我找不到允许监控超过 4GB 数据的解决方案。我尝试了 WMI 和 psutil,但都卡在 32 位边界。我做这样的事情:
import wmi
import psutil
import subprocess
def measure_memory( process ):
mem = psutil.Process( process.pid ).get_memory_info().rss
return "%.2f M" % (float(mem)/1024./1024.)
def measure_memory_wmi( process ):
w = wmi.WMI('.')
result = w.query("SELECT WorkingSet FROM Win32_PerfRawData_PerfProc_Process WHERE IDProcess="+str(process.pid))
subset = result[0]
return "%.2f M" % (float(subset.WorkingSet)/1024./1024.)
process = subprocess.Popen( [path_to_program, '-option'] )
print measure_memory( process )
print measure_memory_wmi( process )
这交付:
-0.00 M
4096.00 M
当进程浏览器交付时
6.806.976 K
还有其他获取真实数据的方法吗?
谢谢!
【问题讨论】:
【参考方案1】:好的,在一些 WMI 工具/谷歌事故之后,我找到了另一种方法来表达一个提供正确数字的查询。这是新代码:
def measure_memory( process ):
w = wmi.WMI('.')
result = w.query("SELECT WorkingSetSize FROM Win32_Process WHERE ProcessID="+str(process.pid))
print result
subset = result[0]
return "%.2f" % (float(subset.WorkingSetSize)/1024./1024.)
这似乎现在有效。任何人都可以确认这应该比我现在的情况更有效吗?
【讨论】:
以上是关于如何在 python 2.7 32bit 中获取 64bit 进程的内存工作集?的主要内容,如果未能解决你的问题,请参考以下文章
安装python2.7.13-64bit & Pycharm在两个python版本之间切换