如何在 python 应用程序中使用两个事件循环

Posted

技术标签:

【中文标题】如何在 python 应用程序中使用两个事件循环【英文标题】:How to use two event loops in python application 【发布时间】:2014-08-11 10:13:36 【问题描述】:

假设我有一个使用 zmq 传入和传出消息的类。 我想用 RPC 来控制它,为它制作一个远程外观。

我该怎么做?

class Processor()

def init()
state = AddHeaderState() # There is more states of course
zmq_sender = create_zmq_sender()

def set_state(state):
...

def process(message):
output = state.process(message)
zmq_sender.send(output)

因此,通过该示例,可以说我想远程更改状态。

如果我将 zerorpc 添加到其中,我将无法使用 zmq 传入和传出消息,反之亦然,对吗? 这个例子我的问题更清楚了吗?

【问题讨论】:

你知道this吗? 我已阅读文档。所以呢? groups.google.com/forum/#!topic/zerorpc/_LdFqXI76rU 嗯,它是一个基于 ZMQ 的 RPC,文档解释了如何通过大量 grate 示例使用它。那么你能缩小问题的范围吗? 我添加了一些伪代码,也许对你有帮助。 你在标题中提到的两个循环是什么? 【参考方案1】:

我是否正确假设您想要并排/同时运行两个发送通道?有一整套section in zguide 专门用于多线程。我发现 taskwork2: Parallel task worker with kill signalling 示例在 Handling Errors and ETERM 部分很有用。

如果我猜错了,你可能想用一张图来澄清一下。 PlantUML 让您做到这一点。 On my Github 是考虑到 ZMQ 的流量控制示例。

【讨论】:

以上是关于如何在 python 应用程序中使用两个事件循环的主要内容,如果未能解决你的问题,请参考以下文章

如何让python等待“无”,首先运行事件循环

浏览器事件循环与node事件循环

Qt(PyQt)事件循环中的xmlrpc?

Node.js 事件循环

事件循环

libevent