代码之家  ›  专栏  ›  技术社区  ›  Anders

“在…释放IUnknown时发生Win32异常”使用挂架和WMI时出错

  •  2
  • Anders  · 技术社区  · 15 年前

    我使用挂架结合WMI模块来对一些机器进行一些基本的系统监控,对于基于POSIX的系统来说,一切都很简单——对于Windows来说——没有那么多。

    向Pylons服务器发出请求以获取当前CPU,但是它工作不好,或者至少与WMI模块一起工作。首先,我只是做了这样一件事:

    c = wmi.WMI()
    for cpu in c.Win32_Processor():
        value = cpu.LoadPercentage
    

    然而,这给了我一个错误,当访问这个模块通过挂架( http://ip:port/cpu ):

    raise x_wmi_uninitialised_thread ("WMI returned a syntax error: you're probably running inside a thread without first calling pythoncom.CoInitialize[Ex]")
    x_wmi_uninitialised_thread: <x_wmi: WMI returned a syntax error: you're probably running inside a thread without first calling pythoncom.CoInitialize[Ex] (no underlying exception)>
    

    看着 http://timgolden.me.uk/python/wmi/tutorial.html "Win32 exception occurred releasing IUnknown at..."

    http://mail.python.org/pipermail/python-win32/2007-August/006237.html 以及后续的帖子,试图跟进-然而 pythoncom._GetInterfaceCount()

    提前谢谢,

    安德斯

    http://msdn.microsoft.com/en-us/library/aa394531%28VS.85%29.aspx ,你不必担心线程这样的废话。

    2 回复  |  直到 14 年前
        1
  •  4
  •   jkp    15 年前

    如果是这种情况,并且您无法使这些信息正常工作,一种可能的解决方法是稍微重新考虑应用程序的因素,以便始终有一个服务线程在运行,您可以查询这些信息,而不是设置所有内容并按需请求。它甚至可能不需要是一个线程,也许只是一个应用程序启动时设置的实用程序类实例,由锁保护以防止并发访问。

        2
  •  5
  •   Robert    14 年前

    推荐文章