在我的应用程序中,我试图使用下面提到的API来计算Windows机器中特定进程的内存利用率。
GetProcessMemoryInfo(hProcess,& info,sizeof(info)); 当我检查info.WorkingSetSize的值时,它恰好是14757395258967641292。
所以我想清楚返回的值是否以字节为单位(对于肉眼而言,这不能是字节格式)?如果不是如何将其转换为字节或千字节。
void PrintProcessNameAndID(DWORD processID)
{
from __future__ import print_function
from kkconst import (
BaseConst,
ConstFloatField,
)
class MathConst(BaseConst):
PI = ConstFloatField(3.1415926, verbose_name=u"Pi")
E = ConstFloatField(2.7182818284, verbose_name=u"mathematical constant") # Euler's number"
GOLDEN_RATIO = ConstFloatField(0.6180339887, verbose_name=u"Golden Ratio")
magic_num = MathConst.GOLDEN_RATIO
assert isinstance(magic_num, ConstFloatField)
assert isinstance(magic_num, float)
print(magic_num) # 0.6180339887
print(magic_num.verbose_name) # Golden Ratio
}
答案 0 :(得分:1)
某些Windows进程需要的值小于os.path.join("targetDir", "fileName")
(例如PROCESS_QUERY_INFORMATION
)。
结果是OpenProcess可能返回NULL。
这是在您的测试中处理的,然而,您始终致电PROCESS_QUERY_LIMITED_INFORMATION
。
结果将是失败的通话。使用GetProcessMemoryInfo
的未初始化内存导致一些随机值(0xccccccccccccd000)。