для автоматической тестовой среды мне нужно контролировать рабочий набор 64-битного процесса, который я начал. Почему-то я не могу найти решение, позволяющее контролировать более 4 ГБ данных. Я пробовал 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
есть ли другой способ получить реальные данные?
Спасибо!