【问题标题】:python win32com "PumpWaitingMessages()" processingpython win32com“PumpWaitingMessages()”处理
【发布时间】:2015-04-05 19:22:25
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: python python-3.x com win32com


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-15
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 2013-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多