python win32com "PumpWaitingMessages()" 处理中
python win32com "PumpWaitingMessages()" processing
我用Python 3.4
。我有一个程序通过 win32com
包提供与 Windows 中的 COM
模块的集成。为了处理来自该模块的消息,我在无限 while
循环中使用了 pythoncom.PumpWaitingMessages()
方法。但是 python 无限循环使 100% CPU 核心负载(如 Windows 任务管理器中所示)。问题:
它是真实的 "work" 还是 Windows 任务管理器的特性?
如何避免这种情况。也许通过使用 asyncio
模块或其他方式?
- 是否可以在另一个线程中处理消息或使用
pythoncom
异步处理消息?
PumpWaitingMessage
将处理消息,并且 return 一旦没有更多消息需要处理。
您可以在循环中调用它,但您应该在下一次循环迭代之前调用 MsgWaitForMultipleObjects
或 MsgWaitForMultipleObjectsEx
。
避免在初始循环迭代之前调用这些函数,因为它们会阻塞,您将没有机会查看是否满足某些条件,无论是否有消息要处理。或者,为这些函数提供合理的超时时间。
我用Python 3.4
。我有一个程序通过 win32com
包提供与 Windows 中的 COM
模块的集成。为了处理来自该模块的消息,我在无限 while
循环中使用了 pythoncom.PumpWaitingMessages()
方法。但是 python 无限循环使 100% CPU 核心负载(如 Windows 任务管理器中所示)。问题:
它是真实的 "work" 还是 Windows 任务管理器的特性?
如何避免这种情况。也许通过使用
asyncio
模块或其他方式?- 是否可以在另一个线程中处理消息或使用
pythoncom
异步处理消息?
PumpWaitingMessage
将处理消息,并且 return 一旦没有更多消息需要处理。
您可以在循环中调用它,但您应该在下一次循环迭代之前调用 MsgWaitForMultipleObjects
或 MsgWaitForMultipleObjectsEx
。
避免在初始循环迭代之前调用这些函数,因为它们会阻塞,您将没有机会查看是否满足某些条件,无论是否有消息要处理。或者,为这些函数提供合理的超时时间。