对于自动化测试框架,我需要监控我启动的 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
还有其他方法可以获取真实数据吗?
谢谢!