我使用 Python 3.4
。我有一个程序,通过 win32com
包提供与 Windows 中的 COM
模块的集成。为了处理来自该模块的消息,我在无限 while
循环中使用了 pythoncom.PumpWaitingMessages()
方法。但是 python 无限循环使 100% CPU 核心负载(如 Windows 任务管理器中所示)。问题:
Windows 任务管理器是真正的“工作”还是特性?
如何避免这种情况。也许通过使用
asyncio
模块或其他方式?- 是否可以在另一个线程中处理消息或使用
pythoncom
异步处理消息?
最佳答案
PumpWaitingMessage
将处理消息并在没有更多消息要处理时立即返回。
您可以在循环中调用它,但您应该在下一次循环迭代之前调用 MsgWaitForMultipleObjects
或 MsgWaitForMultipleObjectsEx
。
避免在初始循环迭代之前调用这些函数,因为它们会阻塞,您将没有机会查看是否满足某些条件,无论是否有消息要处理。或者,为这些函数提供合理的超时。
关于python win32com "PumpWaitingMessages()"处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28352419/