2015-02-05 214 views
2

我使用Python 3.4。我有一个程序,它提供了与Windows中的COM模块的集成,由win32com包提供。要处理来自此模块的消息,我在无限循环while中使用pythoncom.PumpWaitingMessages()方法。但是python无限循环会产生100%的CPU核心负载(如Windows任务管理器所示)。问题:python win32com“PumpWaitingMessages()”处理

  1. 它是真正的“工作”或Windows任务管理器的特点?

  2. 如何避免这种情况。也许通过使用asyncio模块或其他方式?

  3. 是否可以在另一个线程中处理消息或与pythoncom异步处理?

回答

1

PumpWaitingMessage将处理消息并在没有更多消息要处理时立即返回。

您可以在循环中调用它,但在下一次循环迭代之前应该调用MsgWaitForMultipleObjectsMsgWaitForMultipleObjectsEx

避免在初始循环迭代之前调用这些函数,因为它们会阻塞,并且您将无法看到是否有条件满足是否有消息要处理。或者,为这些功能提供合理的超时。