Как получить рабочий набор из 64-битного процесса в python 2.7 32bit?

для автоматической тестовой среды мне нужно контролировать рабочий набор 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

есть ли другой способ получить реальные данные?

Спасибо!

Ответ 1

Хорошо, после некоторых инструментов WMI/ошибки Google я нашел другой способ фразы запроса, который поставляет правильные номера. Это новый код:

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.)

Теперь это работает. Может ли кто-нибудь подтвердить, что это должно работать больше, чем мое дело сейчас?