1

一个由某个作业监视器完全调度和监视的应用程序实现了一个 JMSMessageListener ......现在防止这个主线程(它在 JMS 队列上注册自己)不完成它的执行的最佳方法是什么。否则,作业监视器会将此作业标记为已完成,而消息事件则应该改为工作。

有2种方式-

  • 第一种方式

    导入计时器

    其他一些任务...消息的 JMS 队列注册

    timer.sleep(_LONG_TIME) # 这将阻止它离开执行

  • 第二种方式——

    来自twisted.internet 进口反应堆

    其他一些任务...消息的 JMS 队列注册'''

    reactor.run() # 这会将执行控制发送到反应堆

所以现在我明白了……让线程休眠不会影响 CPU和机器资源。虽然我不确定发生了什么,但一旦控制权进入反应堆?

4

1 回答 1

0

两者都不会显着影响 CPU。python reactor 基于ractor 模式,其核心是一个带有块的事件循环,直到事件到达然后处理它。在微不足道的情况下,没有提供任何事件,因此没有完成任何工作。

可能值得查看 Twisted reactor 文档。从这里开始:http: //twistedmatrix.com/documents/13.1.0/core/howto/reactor-basics.html#auto0

使用扭曲反应器,您可以通过更改代码以发布导致反应器完成的事件来提供“退出”能力。只有在发布此事件时,您的主线程才会起作用。使用 sleep 解决方案,您必须休眠一小段时间,检查是否已发布退出事件,如果未发布则返回休眠 - 这意味着退出不是立即的,您的主线程也将是每当它醒来时就不必要地工作。

于 2016-06-08T12:38:36.570 回答