【问题标题】:WMI querying issues in PythonPython 中的 WMI 查询问题
【发布时间】:2010-01-20 22:52:49
【问题描述】:

我最近一直在编写 Squish 测试脚本,并尝试执行类似于以下解决方案中描述的操作: Total memory used by Python process?

我的代码中相关的sn-ps如下:

def measureMemory():
    w = wmi.WMI('.')
    result = w.query("SELECT WorkingSet FROM Win32_PerfRawData_PerfProc_Process WHERE Name=\"some_program\"")
    print result
    for WorkingSet in result:
        print WorkingSet
    subset = result[0]
    print subset['WorkingSet']
    # return result[0]['WorkingSet']

for i in range(50):
    memory = measureMemory()
    if memory:
        # test.passes("%d memory used during undo." % memory)
        print memory

不幸的是,每当我实际尝试运行该东西时都会遇到错误,如下所示。

[<_wmi_object: \\USER-PC\root\cimv2:Win32_PerfRawData_PerfProc_Process.Name="some_program">]

instance of Win32_PerfRawData_PerfProc_Process
{
    Name = "some_program";
    WorkingSet = "19386368";
};

Traceback (most recent call last):
  File "C:\Python26\Test scripts\Testify", line 25, in -toplevel-
    memory = measureMemory()
  File "C:\Python26\Test scripts\Testify", line 19, in measureMemory
    print subset['WorkingSet']
  File "C:\Python24\Lib\site-packages\win32com\client\dynamic.py", line 242, in __getitem__
    raise TypeError("This object does not support enumeration")
TypeError: This object does not support enumeration

我不确定为什么这会引发错误,因为我认为我没有对我从中获取代码的示例进行任何重大更改。 我正在使用 Python 2.4.4,如果这很重要的话,不幸的是我无法真正升级,无论它有多大帮助。

【问题讨论】:

    标签: python wmi wmi-query


    【解决方案1】:

    WMI 语法似乎与示例有所不同。尝试使用子集.WorkingSet 而不是子集['WorkingSet']

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多