python win32com "PumpWaitingMessages()"处理

标签 python python-3.x com win32com

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

  1. Windows 任务管理器是真正的“工作”还是特性?

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

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

最佳答案

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

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

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

关于python win32com "PumpWaitingMessages()"处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28352419/

相关文章:

python - Sphinx在make html之后找不到我的任何模块

python - 从 __init__ 分配属性的快捷方式

python-3.x - 找出人们喝咖啡的平均数量——几乎正确(在异常处理方面遇到一些麻烦)

c# - StaTaskScheduler和STA线程消息泵送

.net - .NET Core 中是否有 System.Runtime.InteropServices.Marshal.GetActiveObject() 的替代品?

c# - C++/CLI 中的 ComVisible

使用不同参数多次运行 Visual Studio C++ 程序的 Python 脚本

python - 在 Intellij/Pycharm 中运行 Django 时出错

python-3.x - 权限错误 : [WinError 5] Access is denied

Python 正则表达式 findall 匹配所有单词对