2015-02-05 226 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

避免在初始循環迭代之前調用這些函數,因爲它們會阻塞,並且您將無法看到是否有條件滿足是否有消息要處理。或者,爲這些功能提供合理的超時。