对于自动化测试框架,我需要监视我开始的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
还有另一种获取真实数据的方法吗?
谢谢!
答案 0 :(得分:0)
好的,在一些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.)
这似乎现在有效。任何人都可以确认这应该比我的情况更有效吗?